【问题标题】:Unable to sign out in a Rails app, using Devise gem, no route matches /users/sign_out无法在 Rails 应用程序中注销,使用 Devise gem,没有路由匹配 /users/sign_out
【发布时间】:2012-04-11 12:52:37
【问题描述】:

我知道不同网站上有很多关于这个问题的问题。我已经尝试了很多东西,但我仍然无法使用 DELETE 方法的链接。

我创建了一个空的 Rails 应用程序

版本:

  • 设计 2.0.4
  • 导轨:3.2.2
  • 红宝石:1.9.2
  • RVM:1.10.3

安装 devise gem 后,我运行了以下命令:

rails generate devise:install
rails generate devise User

我尝试过的修复如下:

初始链接:

<%= link_to "Sign out", destroy_user_session_path %>

我添加了删除方法,在刻度和没有它们:

<%= link_to "Sign out", destroy_user_session_path, :method => 'delete' %>
<%= link_to "Sign out", destroy_user_session_path, :method => :delete %>

将此添加到 application.html.erb:

<%= javascript_include_tag :defaults %>

我在 assets/javascripts/application.js 中取消了这些行的注释:

= require jquery
= require jquery_ujs

我也尝试让 GET 链接正常工作,从 config/initializers/devise.rb 更改了这一行

config.sign_out_via = : delete

到这里:

config.sign_out_via = :get if Rails.env.test?

无论我尝试什么,删除链接都会导致:

No route matches [GET] "/users/sign_out" 

GET 链接也不起作用:

没有路线匹配 [GET] "/"

我当然尝试过重启服务器。

Rake 路由包含以下内容:

 destroy_user_session DELETE /users/sign_out(.:format)      devise/sessions#destroy

提前致谢。

【问题讨论】:

    标签: ruby-on-rails ruby devise


    【解决方案1】:

    我们可以查看您的路线文件吗?

    特别是 devise_for 调用

    您也可以尝试明确设置路径

    devise_for :users, path_names: { sign_out: 'sign_out' }

    【讨论】:

      【解决方案2】:

      在 devise.rb 中

      找到config.sign_out_via = :delete

      更改为config.sign_out_via = :get

      如果你使用 :get 确保你使用的是 :method = :get 并且如果你使用 :delete 使用 :method => :delete 在你的链接

      在生产中你可能需要轮换它,所以你应该使用 if 语句来检查 RAILS_ENV

      在您的示例中,您可能在开发模式下运行而不是测试,这就是它可能无法正常工作的原因。

      并重新启动您的服务器,因为它是一个初始化程序。

      【讨论】:

      • 直截了当的回答。我已经发现 Heroku 使用了 :GET 并在生产(Heroku)中使代码中断,因此我不必将其更改为:get,而是必须将它们设置为列表以便它可以处理这两个请求,然后我有config.sign_out_via = :delete, :get这对我有用。
      【解决方案3】:

      这个助手总是为我工作:

      link_to "Logout", destroy_user_session_path, :method => :delete
      

      也许您没有正确登录?您可以通过if current_user查看

      【讨论】:

      • 我已登录,只有在 user_signed_in?是真的。
      猜你喜欢
      • 1970-01-01
      • 2019-02-20
      • 2014-03-26
      • 2017-08-03
      • 2011-12-27
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 2015-12-09
      相关资源
      最近更新 更多