繁体   English   中英

destroy_user_session_path在Rails中触发GET而不是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:注销链接停止工作

考虑以下两点以消除此错误:

  1. routes.rb (如果不想使用:delete方法):

    devise_for :users do get '/users/sign_out' => 'devise/sessions#destroy' end

  2. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM