ruby-on-rails - 没有路由匹配 [GET] "/members/sign_out Devise

标签 ruby-on-rails ruby devise

我使用 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 请求发送,路由将失败。

检查下面的选项以使其工作:

  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
    

关于ruby-on-rails - 没有路由匹配 [GET] "/members/sign_out Devise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23712965/

相关文章:

ruby-on-rails - 设计和 AJAX : Can't verify CSRF token authenticity after sign in

ruby-on-rails - API 中未初始化的常量 SessionsController

ruby-on-rails - 有效的 TDD 策略包括哪些部分?

ruby-on-rails - Heroku Ruby on Rails 升级崩溃

java - AES PBE 在 Java 中加密/在 Ruby 中解密

ruby-on-rails - RSpec 检查数组的计数

Ruby/RSpec 随机化似乎不是那么随机

ruby-on-rails - 注册时出现Devise Gem错误

mysql - Rails 服务器上的时间

jquery - Rails - 重新加载 JS 和 CSS