我使用 Rails 4.1.0 和 Devise。我已经在 Member
模型类上设置了设计,当我点击下面的“注销”链接时:
<%= link_to "Log out", destroy_member_session_path, :method => :delete %>
我仅在生产环境中收到以下错误:
No route matches [GET] "/members/sign_out Devise
注意:我已经预编译了我的 Assets 并在我的 application.js 文件中包含以下内容:
//= require jquery
//= require jquery_ujs
最佳答案
当您没有安装 gem jquery-ujs
或者您没有通过 = javascript_include_tag "application"
在您的应用程序中调用生成的 javascript 时,会发生这种情况,响应将作为 GET 请求发送,路由将失败。
检查下面的选项以使其工作:
在
devise.rb
中更改config.sign_out_via
=:get
(不是 推荐,因为 DELETE 是使用它的合适的 RESTful 方式)config.sign_out_via = :delete
使用按钮代替
link_to
到= button_to('Logout', destroy_user_session_path, :method => :delete)
有了 button_to,Rails 将在进行正确的 DELETE 调用时完成繁重的工作。你可以 然后根据需要将按钮样式设置为看起来像链接。
在你的 routes.rb 中
devise_for :members do get '/members /sign_out' => 'devise/sessions#destroy' end
关于ruby-on-rails - 没有路由匹配 [GET] "/members/sign_out Devise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23712965/