rails 4 app。一个简单的问题:为什么这会产生GET请求?
<%= link_to("fdsfds", some_delete_path, method: :delete, data: { confirm: "Are you sure fdsfds?" }) %>
路线:
delete '/some-path/some-path123' => 'controller123#method123', as :some_delete
正确包含所有查询库。
HTML:
<a data-confirm="Are you sure?" rel="nofollow" data-method="delete" href="/fdsfdsfds">dsfdsfds</a>
错误:
No route matches [GET] "/fdsfdsfdss"
答案 0 :(得分:0)
您的代码很好,但您的javascript包含可能不是。检查您的application.js是否包含正确的库。您可能缺少的是“ jquery_ujs ”,它处理确认对话框和非Get请求。
这是我的查询。
//= require jquery
//= require jquery_ujs
//= require_tree .
如果没有javascript库,您的链接将是GET请求。
答案 1 :(得分:0)
我意识到这不是一个答案,而是“如何调试这个?”
您的检查员会展示什么?它是否将请求显示为DELETE?如果不是,请继续。
将其添加到路径路径的最底部,更新link_to,并检查检查员是否发送DELETE请求?
控制器:
def d
abort
end
路线:
match '/d' => 'posts#d', :via => [:delete]
视图:
<%= link_to 'delete', '/d', :method => :delete %>
可能存在一些相互矛盾的路线,虽然这种路线极不可能,但是有很多活动部分有时会导致挑剔的错误。
如果这不能回答您的问题,您是否可以发布您的路线和视图,以及检查员的屏幕截图?
答案 2 :(得分:0)
如果有人来到这里使用bootstrap(v4)gem并且总是忽略开发中的tether
警告:你实际上需要按照建议添加tether gem。
该错误停止执行当前的js文件。如果所有js文件都是单独的(因为它们正在开发中),这并不会阻止data-method
js部分被执行。在生产中,所有js都连接成一个文件,因此它不会执行可能包含data-method
代码的文件的其余部分。