以前在Rails中使用
但是没有结果
我在SO上没有找到任何解决方案,但在Hotwire上找到了论坛。这个解决方案使用了Stimulus动作。我只是稍微改进了一下。
它能用,但是相当困难且看起来不美观,而我们习惯了Rails的酷炫。
button_to
标签时,可以像这样使用确认对话框。<%= button_to 'Destroy', @post, method: :delete, data: { confirm: 'Are you sure?' } %>
data: { confirm: '你确定吗?' }
是Rails的神奇数据属性,它在底层被@rails/ujs库使用。
从Rails 7开始,默认情况下不再使用这个库。取而代之的是Rails使用Turbo库。
现在这段代码不起作用了。
我尝试过的方法
<%= 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上找到了论坛。这个解决方案使用了Stimulus动作。我只是稍微改进了一下。
<%= form_with model: @post, method: :delete, data: { controller: 'confirmation', message: 'Are you sure?', action: 'submit->confirmation#confirm' } do |f| %>
<%= f.submit 'Destroy' %>
<% end %>
// app/javascript/confirmation_controller.js
import { Controller } from '@hotwired/stimulus'
export default class extends Controller {
confirm(event) {
if (!(window.confirm(this.element.dataset.message))) {
event.preventDefault()
}
}
}
它能用,但是相当困难且看起来不美观,而我们习惯了Rails的酷炫。
link_to
和method: :delete
时遇到了奇怪的问题。它会删除当前记录,但也会删除其父记录,这让我感到很困惑。 - Yakob Ubaidistatus: :see_other
参数到redirect_to
中,就像指南建议的那样。 - mechnicov