无法在 Rails 中使用 Devise 销毁会话 [重复]

Posted

技术标签:

【中文标题】无法在 Rails 中使用 Devise 销毁会话 [重复]【英文标题】:Unable to destroy session using Devise in Rails [duplicate] 【发布时间】:2014-05-24 22:40:27 【问题描述】:

Noob 在这里使用 Devise 构建了我的第一个 Rails 4.0 应用程序。使用标准的设计策略设置我的控制器和路由。

Rake Routes 显示:

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

在我的导航中,我的代码是:

<%= link_to "Sign Out", destroy_user_session_path, method: :destroy, data:  confirm: 'Are you sure?'  %>

我正在运行 Guard gem,所以我的服务器始终处于开启状态,所以我知道这不是我的路由和服务器不匹配的问题。我仍然收到以下错误:

没有路由匹配 [POST] "/users/sign_out"

有什么建议吗?谢谢大家!

【问题讨论】:

如果您在启动时添加了像 devise 这样的 gem,Guard 将不会接受新的更改。 Guard 重启了吗? 【参考方案1】:

检查 config/initializers/devise.rb 并确保已设置:

config.sign_out_via = :delete

另外,在我看来我有这个并且工作得很好:

&lt;%= link_to 'Logout', destroy_user_session_path, :method=&gt;'delete' %&gt;

【讨论】:

【参考方案2】:

您可能需要将method(http 动词)选项更改为delete

<%= link_to "Sign Out", destroy_user_session_path, method: :delete, data:  confirm: 'Are you sure?'  %>

【讨论】:

太棒了,谢谢。就是这样! 在这种情况下,您应该接受答案,upvote 对社区也很有用。不客气!

以上是关于无法在 Rails 中使用 Devise 销毁会话 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在生产模式中无意中破坏了Rails Devise会话

如何清空/销毁 Rails 中的会话?

如何在 Devise 中手动创建新用户和用户会话?

Rails 3 获取请求引用者

无法在 gem Devise 中调整控制器,ruby on rails 4

并发请求未完成时无法注销设计用户