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

Rails 7中link_to delete方法失效及Turbo确认弹窗问题求助

Rails 7 Turbo 删除功能问题排查与解决

你用以下代码生成的链接HTML结构正确,但点击后跳转到文章详情页,未触发控制器的DELETE方法:

<%= link_to "Destroy", article_url(article), data: { turbo_method: :delete, turbo_confirm: "Are you sure?"} %>

排查与解决步骤:

  • 确认Turbo已正确导入:检查 app/javascript/application.js 中是否包含以下代码,没有的话添加并重启服务器:
    import "@hotwired/turbo-rails"
    
  • 检查布局文件中的Turbo元标签:确保 app/views/layouts/application.html.erb 的 <head> 里有 <%= turbo_meta_tag %>,Turbo依赖这个标签处理请求。
  • 清除浏览器缓存:旧的JS缓存可能导致Turbo未正常加载,用 Ctrl+Shift+R 强制刷新页面后重试。
  • 更新Turbo版本:查看 package.json 中 @hotwired/turbo-rails 的版本,运行 yarn upgrade @hotwired/turbo-rails 更新到最新版。

问题2:button_to 删除功能生效,但确认弹窗不显示

你用以下代码实现删除,但没有弹出确认提示:

<%= button_to 'delete', article_url(article), method: :delete,
                form: {data: {turbo_confirm: "are you sure?"}} %>

解决方法:

button_to 生成的是表单元素,Turbo的确认提示属性需要直接绑定到表单上,不需要嵌套在 form: 选项里,修改代码为:

<%= button_to 'delete', article_url(article), method: :delete, data: { turbo_confirm: "are you sure?" } %>

通用排查技巧

  • 打开浏览器开发者工具(F12)的「Console」标签,查看是否有Turbo相关的加载报错或语法错误,这类错误会直接导致功能失效。
  • 查看「Network」标签:点击删除按钮/链接时,确认请求方法是否为DELETE,若为GET则说明Turbo未正确拦截请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:45:36