Rails 7中button_to以HTML处理时添加删除确认消息的方法
问题核心:当给
button_to添加data: { turbo: false }强制用HTML处理请求时,turbo_confirm和原生confirm都失效,无法触发确认弹窗。解决办法:
引入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') } %>原生JS绑定确认事件
无需引入额外依赖,直接给按钮添加onclick事件实现确认逻辑:<%= button_to '删除', promotion_path(@promotion), method: :delete, data: { turbo: false }, onclick: "return confirm('#{j t('promotion.delete_sure')}')" %>注意用
j(即escape_javascript)转义文本中的特殊字符,避免JS语法错误。不关闭Turbo(推荐)
若无需强制HTML处理,直接保留Turbo并使用turbo_confirm即可正常触发确认:<%= button_to '删除', promotion_path(@promotion), method: :delete, data: { turbo_confirm: t('promotion.delete_sure') } %>
内容的提问来源于stack exchange,提问作者Jerome
相关产品推荐
相关产品推荐

