导轨设计,没有路线匹配注销
Posted
技术标签:
【中文标题】导轨设计,没有路线匹配注销【英文标题】:rails devise, no route matches logout 【发布时间】:2011-10-12 02:46:19 【问题描述】:虽然有很多类似的问题,但我已经搜索了几个小时,但仍然无法解决。
环境 导轨 3.0.9 红宝石 1.9.2 设计 1.4.2
我更改了默认登录网址:
5 resources :users
6 devise_for :users, :path => "", :path_names => :sign_in => 'login', :sign_out
=> 'logout', :password => 'secret', :confirmation => 'verification', :unlock =>
'unblock', :registration => 'register', :sign_up => 'cmon_let_me_in'
http://localhost:3000/login 对我来说很好用 但我包括
= link_to 'sign_out', destroy_user_session_path, :method => :delete
在我的 application.haml 中,单击它后,它说没有路由匹配“/logout” 为什么? 请帮帮我。
【问题讨论】:
rake routes
的输出是什么?
你试过谷歌搜索吗? ***.com/questions/6805491/…
【参考方案1】:
我遇到了一个几乎相同的问题,并且由于 SO 很容易解决(link to my question)。首先,确保您的布局文件“application.html.erb”中有<%= javascript_include_tag :defaults %>
。
然后,在您的配置 -> 初始化程序 -> “devise.rb” 文件中确保它显示:
config.sign_out_via = :delete
你的“sign_out”代码destroy_user_session_path, :method => :delete
应该可以工作。
【讨论】:
我正在使用 ruby 1.9.2p180、Rails 3.1.0.rc4 并设计 1.4.2。我的布局文件中有 。并使用 :delete %> 但它仍然对我不起作用 在你的“devise.rb”初始化文件中你有config.sign_out_via = :delete
或config.sign_out_via = :get
吗?最近对设计处理路线的方式进行了更新。如果您使用 :delete 方法,则需要将您的 sign_out 路径配置为第一个选项。
我也有同样的问题。我在devise.rb(设置为:delete)和link_to(:method =>:delete)中正确设置了它。我也在使用并包含 JQuery。但是,我仍然收到“GET”请求。我还检查了生成的代码,我看到了 link_to 方法的以下内容:Logout。
我建议您查看我的问题的答案 (***.com/questions/6557311/…)。我建议您仔细检查不同用户遇到的各种问题,您可能会发现一些可以解决您问题的问题。如果没有,请告诉我。
我刚刚遇到了这个问题。这不是我以前见过的东西。这个答案有助于我的调试 - 我注意到我的 javascript 文件没有加载(在开发的早期阶段)。我修复了我的 JS 文件以按预期加载并且路由正常工作。【参考方案2】:
这个聚会有点晚了,但这里有另一个answer的帮助
指定你的方法:
<%= link_to "sign out", destroy_user_session_path, method: :delete %>
【讨论】:
【参考方案3】:在config/initializers/devise.rb
中设置config.sign_out_via = :get
以使用以下代码作为您的退出链接。
<%= link_to "Sign Out", destroy_user_session_path %>
【讨论】:
投反对票,因为这不如使用 post + csrf 令牌安全。以上是关于导轨设计,没有路线匹配注销的主要内容,如果未能解决你的问题,请参考以下文章