我在视图中有以下代码:
<li><%= link_to 'Sign out', destroy_user_session_path, method: :delete %></li>
生成以下HTML:
<a data-method="delete" href="/users/sign_out" rel="nofollow">Sign out</a>
但是,点击该链接时,我收到以下错误:
No route matches [GET] "/users/sign_out"
我在这里做错了什么?为什么要进行GET而不是删除?
如果有帮助,我正在使用Twitter Bootstrap ......
答案 0 :(得分:4)
你有吗
//= require jquery
//= require jquery_ujs
你的application.js文件中的?
另一种猴子补丁是修改devise.rb并将signout方法更改为get 像这样
配置/初始化/ devise.rb
config.sign_out_via = :get
这篇文章可能会有所启发: Rails 3.2 with Devise: logout link stopped working
答案 1 :(得分:1)
考虑这两点来摆脱这个错误:
在routes.rb
中(如果您不想使用:delete
方法):
devise_for :users do get '/users/sign_out' => 'devise/sessions#destroy' end
sign_out
链接必须包含:method => :delete
(已有)
<%= link_to "Sign out", destroy_user_session_path, :method => :delete %>
最后,在你的layout
放置:
<%= javascript_include_tag :defaults %>
感谢。
答案 2 :(得分:0)
link_to
fails back to a get if Javascript is not enabled。看起来您的浏览器禁用了Javascript,或者更可能是页面上存在Javascript错误。如果您的页面上存在未被捕获的Javascript错误,则在发生错误后,所有其他Javascript将无法运行。