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

Rails 7中button_to以HTML处理时添加删除确认消息的方法

Rails 7关闭Turbo后给button_to删除操作添加确认弹窗的解决方法
  • 问题核心:当给button_to添加data: { turbo: false }强制用HTML处理请求时,turbo_confirm和原生confirm都失效,无法触发确认弹窗。

  • 解决办法:

    1. 引入Rails UJS
      Rails 7默认移除了jquery-ujs,若要使用原生data-confirm,需手动导入并启动rails-ujs:

      // app/javascript/application.js
      import Rails from "@rails/ujs"
      Rails.start()
      

      之后button_to写法:

      <%= button_to '删除', promotion_path(@promotion), method: :delete, data: { turbo: false, confirm: t('promotion.delete_sure') } %>
      
    2. 原生JS绑定确认事件
      无需引入额外依赖,直接给按钮添加onclick事件实现确认逻辑:

      <%= button_to '删除', promotion_path(@promotion), method: :delete, data: { turbo: false }, onclick: "return confirm('#{j t('promotion.delete_sure')}')" %>
      

      注意用j(即escape_javascript)转义文本中的特殊字符,避免JS语法错误。

    3. 不关闭Turbo(推荐)
      若无需强制HTML处理,直接保留Turbo并使用turbo_confirm即可正常触发确认:

      <%= button_to '删除', promotion_path(@promotion), method: :delete, data: { turbo_confirm: t('promotion.delete_sure') } %>
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 10:04:57