Ruby on rails 4 rails 4.2链接到方法:无路由匹配[POST]

Ruby on rails 4 rails 4.2链接到方法:无路由匹配[POST],ruby-on-rails-4,rails-routing,link-to,Ruby On Rails 4,Rails Routing,Link To,我只是想用method::delete构造一个链接到,在我的用户控制器中调用destroy方法: <%= link_to 'disable token', user_path(user), method: :delete, data: { confirm: 'Are you sure?'} %> 事实上,我知道javascript已经加载并执行了它应该执行的操作,因为它会生成“你确定吗?”警报对话框 然而,当我点击链接时,我得到以下信息: No route matches [POS

我只是想用
method::delete
构造一个
链接到
,在我的用户控制器中调用
destroy
方法:

<%= link_to 'disable token', user_path(user), method: :delete, data: { confirm: 'Are you sure?'} %>
事实上,我知道javascript已经加载并执行了它应该执行的操作,因为它会生成“你确定吗?”警报对话框

然而,当我点击链接时,我得到以下信息:

No route matches [POST] "/users/9"
实际上没有这样的路线,因为我唯一的路线是:

users_path  GET /users(.:format)    users#index
user_path   DELETE  /users/:id(.:format)    users#destroy
(对我来说)一个谜是为什么Rails一开始就在这条路线上发帖子?您将注意到URL是正确的(“/users/9”),但HTTP动词不是:POST

正在设置请求的参数:

{"_method"=>"delete",
 "authenticity_token"=>"VcAVJF1/f9mwjNI4GPteRtDiyjKobnioF0hIQvF+3BVMzUnIoHymM2Z3w2sqSLJqJ11sZ/tIHt78aA9
}
在这里,您可以看到
\u方法
键被设置为
delete
,这就是为什么路由错误

我被难住了

Edit:如果我将我的
link\u更改为
call以包含
remote:true
Rails将其路由到正确的路由!所以,为了解决这个问题,我把我的控制器改成了使用UJS,但我不喜欢这样,因为,就我所知,我以前拥有的应该可以工作

下面是指向
调用的
链接,它以JS的形式发送一个正确的删除请求:

<%= link_to 'disable token', u, method: :delete, data: { confirm: 'Are you sure?'}, remote: true %>                                                                                                                                                                                  

也可以尝试明确说明控制器的操作和方法(注意
@user.id
是一个示例,您可能会以不同的方式引用它):


在本例中,我怀疑还有其他javascript覆盖了rails行为


我也有同样的问题(但是它得到了一个GET请求,而不是POST)。结果是一个完全不相关的JS,它在选择器中过于通用,在按钮周围的所有锚定标记上调用jquery的
stopPropagation
,这就是我特定HTML的设置方式。

BTW——我已经浏览了堆栈上与link_to和method::delete相关的各种问答,但是找不到有这个问题的人。如果有答案,请发布!谢谢。也许使用chrome开发者工具之类的工具,检查这个
链接到
生成的HTML会有所帮助。您还可以使用此选项来确保查看的链接正确。应用程序中使用了哪个rails版本?您好,这行中的
u
是什么:
?我通过编辑问题的正文和标题回答了上述评论。但更直接的答案依次是:参见链接_生成的HTML正文;我使用的是Rails 4.2.5.2;u是一个用户模型的实例。感谢Adrian的建议,但我担心它不起作用。好的,是否返回了相同的错误?另外,您能否将路由文件的内容添加到问题中?然后,如果我能进一步提供帮助,我将修改我的答案或删除它。
{"_method"=>"delete",
 "authenticity_token"=>"VcAVJF1/f9mwjNI4GPteRtDiyjKobnioF0hIQvF+3BVMzUnIoHymM2Z3w2sqSLJqJ11sZ/tIHt78aA9
}
<%= link_to 'disable token', u, method: :delete, data: { confirm: 'Are you sure?'}, remote: true %>                                                                                                                                                                                  
<%= link_to 'disable token', url_for(action: :destroy, id: @user.id), method: :delete, data: { confirm: 'Are you sure?'} %>