我使用rails 4.1.0和Devise。我在Member
模型类上设置了设计,当我点击“注销”链接时如下:
<%= link_to "Log out", destroy_member_session_path, :method => :delete %>
我仅在生产环境中收到以下错误:
没有路线匹配[GET]“/ members / sign_out设计
注意:我已经预编译了我的资产,并在application.js文件中包含以下内容:
//= require jquery
//= require jquery_ujs
答案 0 :(得分:2)
当您没有安装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
答案 1 :(得分:0)
在routes.rb
中,订单应为此
devise_for :members
resources :members
resources :members
应归入devise_for :members