Rails link_to 使用 delete 方法执行 get 请求并启用 turbolinks

Rails link_to with method delete performs get request with turbolinks enabled

当启用 Turbolinks 时,

link_to with :method => :delete 正在执行 GET 请求。一旦我禁用 Turbolinks,它就会再次工作。我已经用尽了所有可能的解决方案,包括:

1) 确保助手生成正确的 HTML

<a data-confirm="Are you sure?" rel="nofollow" data-method="delete" href="/admin/organizations/1">Delete</a>

2) 在启用 Turbolinks 并在 link

上尝试了 data-no-turbolinks

3) 确保 jquery 和 jquery-ujs 都被加载

<script src="/assets/jquery/dist/jquery.self-a714331225dda820228db323939889f149aec0127aeb06255646b616ba1ca419.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/jquery-ujs/src/rails.self-d456baa54c1fa6be2ec3711f0a72ddf7a5b2f34a6b4f515f33767d6207b7d4b3.js?body=1" data-turbolinks-track="true"></script>

4) 试过 jquery.turbolinks

5) 确保控制台中没有 javascript 错误

6) 确保 js 文件加载到头部 data-turbolinks-track(这是唯一的 javascript 包含)

javascript_include_tag "application", "data-turbolinks-track" => true

7) 检查路由和请求日志(正在执行 GET 而不是 DELETE

21:56:40 web.1  | Started GET "/admin/organizations/1" for 127.0.0.1 at 2015-11-17 21:56:40 -0500

8) 确保 $(document) 绑定到 'page:change'

我不想使用 button_to(确实有效)。任何其他建议将不胜感激。

这是对 js 文件中点击处理程序的 e.stopPropagation() 调用。我不知道为什么这是导致问题的原因,我有其他调用 stopPropagation 并且这是在页面的不同部分(header)而不是调用 delete link 的地方(main body).如此解决但仍然感到困惑。

我遇到了类似的问题,但是通过在 application.js

中将 //= require jquery_ujs 替换为 //= require rails-ujs 解决了这个问题

看这里: