Ruby on Rails: devise http://0.0.0.0:3000/users/sign_out问题
Ruby on Rails: devise http://0.0.0.0:3000/users/sign_out问题
http://0.0.0.0:3000/users/sign_in 可用,但 http://0.0.0.0:3000/users/sign_out 出现路由错误。
错误信息:
没有匹配的路由 "/users/sign_out"
routes.rb 文件内容:
devise_for :users resources :posts root :to => "posts#index"
问题的出现原因是用户使用了从wiki上复制的链接代码,代码中使用了link_to'Logout', destroy_user_session_path, :method => :delete
来实现用户注销,但是devise默认是使用:get
来实现用户注销的(在initializers/devise.rb文件的第178行配置了# config.sign_out_via = :get
)。
解决方法要么取消注释这一行并将其改为:delete
,要么从link_to代码中移除:method => :delete
部分。
文章内容如下:
在使用Ruby on Rails中的devise插件时,有一个关于用户注销的问题,问题的出现原因是用户复制了一段来自wiki的链接代码。代码如下:
link_to 'Logout', destroy_user_session_path, :method => :delete
然而,devise默认是使用:get
方法来实现用户注销的,这在initializers/devise.rb文件的第178行有配置:
# config.sign_out_via = :get
因此,要解决这个问题,有两种方法。一种是取消注释这一行,并将其改为:delete
,即:
config.sign_out_via = :delete
另一种方法是从链接代码中移除:method => :delete
部分。这样链接代码就变成了:
link_to 'Logout', destroy_user_session_path
通过这两种方法,可以解决这个问题。