首页 > 解决方案 > 在 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>

标签: ruby-on-railsruby-on-rails-5

解决方案


我终于诊断出这里发现的问题(https://github.com/rails/rails/tree/master/actionview/app/assets/javascripts)。由于 rails-ujs 现在包含在 Rails 5 中,我从代码中删除了对它的引用。是的,旧的 gem 不应该捆绑在 Gemfile 中。但是,要访问它,它仍然必须包含在 JavaScript 清单中,例如资产管道中的 application.js。

//= require rails-ujs

推荐阅读