![](/img/trans.png)
[英]Rails 6: link to destroy_user_session_path using GET instead of DELETE
[英]destroy_user_session_path is triggering GET instead of DELETE in Rails
我认为以下代码:
<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而不是DELETE?
我正在使用Twitter Bootstrap,如果有帮助...
你有
//= require jquery
//= require jquery_ujs
在您的application.js文件中?
另一种猴子补丁将是修改devise.rb并更改签出方法,使其像这样
配置/初始化/ devise.rb
config.sign_out_via = :get
这篇文章可能会引起一些启发:具有Devise的Rails 3.2:注销链接停止工作
考虑以下两点以消除此错误:
在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 %>
谢谢。
如果未启用Javascript,则 link_to
不能返回到get 。 您的浏览器似乎禁用了Javascript,或者页面上可能有Javascript错误。 如果您的页面上有未捕获的Javascript错误,则其他所有Javascript将在错误发生后无法运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.