Rails 7中link_to delete方法失效及Turbo确认弹窗问题求助
Rails 7 Turbo 删除功能问题排查与解决
问题1:link_to 配置 data-turbo-method 后无法触发 DELETE 请求
你用以下代码生成的链接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
相关产品推荐
相关产品推荐

