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

Rails 7用--css bootstrap创建应用后Turbo按钮确认弹窗失效如何修复?

修复Rails 7中Turbo确认框不弹出的问题

问题原因

你将turbo_confirm属性绑定到了form元素上,但Turbo的确认逻辑更适配绑定在触发提交的按钮/链接元素上;同时Bootstrap的JS可能会拦截按钮点击事件,干扰Turbo的默认行为。

解决方案

方案1:直接给button元素添加turbo_confirm

修改button_to的参数,将data: { turbo_confirm: ... }直接作为按钮的HTML属性,而非嵌套在form选项中:

= button_to "Sign out", edit_post_path, method: :delete, data: { turbo_confirm: "Are you sure?" }

此写法会将data-turbo-confirm直接渲染到按钮标签上,Turbo能正确识别并触发确认弹窗。

如果button_to的方式仍有问题,可改用link_to,通过data-turbo-method模拟DELETE方法,同时添加确认属性:

= link_to "Sign out", edit_post_path, data: { turbo_method: :delete, turbo_confirm: "Are you sure?" }, class: "btn btn-danger"

这种方式更简洁,Turbo对链接的属性支持也更稳定。

方案3:确保Turbo正确加载

检查app/javascript/application.js中是否已正确引入Turbo:

import "@hotwired/turbo-rails"

如果存在Turbo.session.drive = false这类禁用代码,需移除或调整,确保Turbo驱动模式正常启用。

方案4:处理Bootstrap与Turbo的冲突

若Bootstrap JS拦截了事件,可尝试给按钮添加data-bs-toggle="button",或在Turbo加载后重新初始化Bootstrap组件:

// 在application.js中添加
document.addEventListener('turbo:load', () => {
  const buttons = document.querySelectorAll('[data-bs-toggle="button"]');
  buttons.forEach(button => new bootstrap.Button(button));
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:13:25