无法在 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
另外,在我看来我有这个并且工作得很好:
<%= link_to 'Logout', destroy_user_session_path, :method=>'delete' %>
【讨论】:
【参考方案2】:您可能需要将method
(http 动词)选项更改为delete
:
<%= link_to "Sign Out", destroy_user_session_path, method: :delete, data: confirm: 'Are you sure?' %>
【讨论】:
太棒了,谢谢。就是这样! 在这种情况下,您应该接受答案,upvote 对社区也很有用。不客气!以上是关于无法在 Rails 中使用 Devise 销毁会话 [重复]的主要内容,如果未能解决你的问题,请参考以下文章