0

我正在使用设计进行身份验证,现在,我可以注册一个自动登录的用户。

但是,设计无法识别路径localhost:3000/users/sign_out

它给出了一个错误

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

在我的路线中,当我为用户生成设计时,我有 devise_for :users 语句。

我也在我的用户模型中设计了很好的设置,user.rb 如下

class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me
end

我的 rake 路线显示以下内容

destroy_user_session DELETE /users/sign_out(.:format)      devise/sessions#destroy

任何人都知道为什么我的 URL 路径没有被识别

4

1 回答 1

0

这是因为路由需要 DELETE HTTP 操作而不是 GET 操作。

destroy_user_session删除/users/sign_out(.:format) 设计/会话#destroy

通过在浏览器中输入 URL,您将向该 URL 发送 GET 操作。

为了使 devise.rb 中的 sign_out 路由更改接受 GET 操作:

config.sign_out_via = :delete

to 

config.sign_out_via = :get

另一种方法是向视图中的链接添加一个:method => :delete,这样 DELETE 操作将按照 Devise 的预期发送到您的服务器。

于 2012-11-14T09:03:22.893 回答