Ruby on Rails: devise http://0.0.0.0:3000/users/sign_out问题

25 浏览
0 Comments

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"

0
0 Comments

问题的出现原因是用户使用了从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

通过这两种方法,可以解决这个问题。

0