在我添加此代码之前,设计不会注销用户。为什么?
Devise would not sign off users until I added this code. Why?
不知为何这次申请的时候
<%= link_to "Sign Out", destroy_user_session_path, method: :delete%>
它returns一个user/sign_out未找到错误
通过 Whosebug 挖掘我发现通过应用
devise_scope :user do
get '/users/sign_out' => 'devise/sessions#destroy'
end
我的 routes.rb 会允许它工作。确实如此。
后来,我决定再试一次,于是我去掉了上面的代码,以用户身份登录,神奇的是sign_out路径link在没有代码的情况下又能正常工作了。
这是怎么回事?
在您前往 delete
的路线中复制 get
:
devise_scope :user do
delete '/users/sign_out' => 'devise/sessions#destroy'
end
而且我认为它应该向您的自定义路由添加其他会话操作并在您的设计路由中跳过会话控制器:
as :user do
delete '/users/sign_out' => 'devise/sessions#destroy', :as => :destroy_user_session
get '/users/signin' => 'devise/sessions#new', :as => :new_user_session
post '/users/signin' => 'devise/sessions#create', :as => :user_session
end
devise_for :users, :skip => [:sessions]
不知为何这次申请的时候
<%= link_to "Sign Out", destroy_user_session_path, method: :delete%>
它returns一个user/sign_out未找到错误
通过 Whosebug 挖掘我发现通过应用
devise_scope :user do
get '/users/sign_out' => 'devise/sessions#destroy'
end
我的 routes.rb 会允许它工作。确实如此。
后来,我决定再试一次,于是我去掉了上面的代码,以用户身份登录,神奇的是sign_out路径link在没有代码的情况下又能正常工作了。
这是怎么回事?
在您前往 delete
的路线中复制 get
:
devise_scope :user do
delete '/users/sign_out' => 'devise/sessions#destroy'
end
而且我认为它应该向您的自定义路由添加其他会话操作并在您的设计路由中跳过会话控制器:
as :user do
delete '/users/sign_out' => 'devise/sessions#destroy', :as => :destroy_user_session
get '/users/signin' => 'devise/sessions#new', :as => :new_user_session
post '/users/signin' => 'devise/sessions#create', :as => :user_session
end
devise_for :users, :skip => [:sessions]