ruby-on-rails - 在 Rails 5 下,使用 helper link_to 和方法 delete 发出 get 和 object#show 而不是 object#destroy
问题描述
我正在迁移到 Rail 5.2.3,发现我的删除代码失败了。当我按下“删除对象”按钮时,它会路由到 object#show 而不是 object#destroy。此代码在 Rails 4 下运行良好,但在 Rails 5 下失败。
html.erb 模块包括:
<%= link_to('Delete Object', {action: :destroy, class: 'btn btn-warning kc-wide'}, method: :delete, data: {confirm: 'Are you sure?', disable_with: "Processing..."}) %>
生成的代码是:
<a data-confirm="Are you sure?" data-disable-with="Processing..." rel="nofollow" data-method="delete" href="/admin/objects/414?class=btn+btn-warning+kc-wide">Delete Object</a>
解决方案
我终于诊断出这里发现的问题(https://github.com/rails/rails/tree/master/actionview/app/assets/javascripts)。由于 rails-ujs 现在包含在 Rails 5 中,我从代码中删除了对它的引用。是的,旧的 gem 不应该捆绑在 Gemfile 中。但是,要访问它,它仍然必须包含在 JavaScript 清单中,例如资产管道中的 application.js。
//= require rails-ujs