以前在Rails中使用button_to
标记时,可以使用如下所示的确认对话框
<%= button_to 'Destroy', @post, method: :delete, data: { confirm: 'Are you sure?' } %>
data: { confirm: 'Are you sure?' }
是Rails魔术数据属性,由@rails/ujs库在幕后使用
在Rails7之后,这个库在缺省情况下不再打开。请使用Turbo库来代替这个Rails
现在这个代码不起作用了
官方Rails文档和Turbo handbook中没有相关信息
我所尝试的
<%= button_to 'Destroy', @post, method: :delete, data: { turbo_confirm: 'Are you sure?' } %>
<%= button_to 'Destroy', @post, method: :delete, data: { 'turbo-confirm': 'Are you sure?' } %>
但是没有结果
我在SO上没有找到解决方案,但是在Hotwire forum上找到了,这个方案有刺激作用,我只是稍微改进了一下
一个二个一个一个
它可以工作,但是相当困难,而且看起来很难看,我们已经习惯了Rails的酷
4条答案
按热度按时间7xllpg7q1#
在Rails with Turbo(不带rails-ujs)中,使用
button_to
调用确认弹出窗口时,我们需要使用如下代码或
两者都生成
data-turbo-confirm
属性所以我们需要添加这个属性,而不是提交按钮(像rails-ujs中那样),而是直接添加到包含这个按钮的表单中(让我提醒你,这个标签生成了一个带有按钮的表单)
ee7vknir2#
这在7.0.3中有点复杂,如果是使用turbo的页面,则如下所示:
这就形成了一个小的形式,现在如果你使用turbo,但不是在那个特定的页面上,你不再从旧的rails ujs得到简单的
comfirm: 'message'
,而是必须使用刺激控制器。那么
那么
这是一个扫兴的铁路删除功能,但如果你想使用hotwire你需要承诺完全购买整个生态系统。
envsm3lx3#
我不完全理解这一点,但以下内容对我很有效
第一个月
an svg which shows a trash can
<% end %>
.我也没有任何看起来像OP的
confirmation_controller
的内容mgdq6dx14#
不是最初的问题,但对于rails
7.0.4
,它的工作原理相同(无刺激):