没有路线匹配[GET]“/ members / sign_out设计

时间:2014-05-17 15:18:11

标签: ruby-on-rails ruby devise

我使用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             

2 个答案:

答案 0 :(得分:2)

当您没有安装gem jquery-ujs或未通过= javascript_include_tag "application"在应用程序中调用生成的javascript时会发生这种情况,响应将作为GET请求发送,并且路由将失败

检查以下选项以使其正常工作:

  1. devise.rb更改config.sign_out_via = :get(不是 建议,因为DELETE是使用它的合适的RESTful方式)

    config.sign_out_via = :delete 
    
  2. 使用按钮代替link_to

    = button_to('Logout', destroy_user_session_path, :method => :delete)
    

    使用button_to Rails将在进行正确的DELETE调用时完成繁重工作。您可以 然后根据需要将按钮设置为看起来像链接。

  3. 在您的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