You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails7删除用户跳转至show而非destroy动作问题求助

在Rails 7中,默认移除了jQuery UJS,转而使用Hotwire Turbo,这是导致method: :delete失效、请求变为GET(跳转到show动作)的核心原因。以下是几种可行的解决方案:

方案1:使用Turbo的data-turbo-method属性

将视图中的link_to代码替换为Turbo兼容的写法:

<p>
  <%= link_to "Destroy this user", user, data: { turbo_method: :delete } %>
</p>

Turbo会通过这个属性触发DELETE请求,确保路由匹配到destroy动作。

方案2:重新引入Rails UJS

如果你更习惯传统UJS的方式,可以在app/javascript/application.js中导入Rails UJS:

import "@rails/ujs"

导入后重启服务器,原来的method: :delete写法就能正常工作,此时生成的HTML会带有data-method="delete"属性。

额外排查点

  • 确认Turbo已启用:检查app/javascript/application.js中是否存在import "@hotwired/turbo-rails",这是Rails 7默认配置,如果被注释请恢复。
  • 检查路由:运行rails routes确认DELETE /users/:id确实指向users#destroy动作。
  • 浏览器控制台排查:打开浏览器开发者工具,查看是否有JS加载报错,同时检查生成的链接HTML属性是否正确(Turbo方式对应data-turbo-method="delete",UJS方式对应data-method="delete")。

内容的提问来源于stack exchange,提问作者Rahul Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 11:57:24