2012-05-28 22 views
2

我有这个在我的应用程序控制器:如何在AccessDenied异常之后注销用户? (设计)

rescue_from CanCan::AccessDenied do |exception| 
    redirect_to destroy_user_session_path, :method => :delete, :alert => exception.message 
end 

我想一旦他们试图打开一个资源,他们不能访问注销用户。 但是,不使用“删除”的方法,我得到

No route matches [GET] "/authenticate/users/sign_out" 

如何注销用户,并显示登录表单(new_user_session)?

顺便说一句,正常的注销链接完美地工作。

<%= link_to "Logout: #{current_user.name}", destroy_user_session_path, :method => :delete %> 

王牌

回答

2

怎么样?:

rescue_from CanCan::AccessDenied do |exception| 
    sign_out :user if user_signed_in? 
    redirect_to new_user_session_path, alert: exception.message 
end 

但恕我直言这不是一个可预期的行为。

+0

太棒了,那有效!我明白你的意思是不可预期的行为,但至少我现在知道如何去做。首先签署用户,然后去你想要的地方吧!谢谢! –