ruby-on-rails - :confirm in rails not working

标签 ruby-on-rails link-to button-to

我刚开始使用 ruby​​ on rails 进行编码,我一直在遵循一个指南,该指南使用的 rails 版本比我使用的更过时。我正在使用 3.2.12

这是我的代码:

<%= button_to 'Destroy', product, :method => "delete", :confirm => 'Are you sure?'  %>

据我了解,这些是传递给 rails 的符号,然后将其转换为 html 或 javascript 操作,然后弹出消息框并删除对象(如果适用)。上面的代码销毁了对象,但是并没有弹出确认框。为什么是这样?另外,我最初有以下内容:
<%= link_to 'Destroy', product, :method => "delete", :confirm => 'Are you sure?'  %>

在任何情况下都不会弹出确认框,使用 link_to 或 button_to。下面是使用 Chrome 的检查器检查时呈现的 html。 jquery 和 jquery-ujs 也被加载到了,所以我不确定从这里去哪里。
<input name="_method" type="hidden" value="delete">
<input data-confirm="Are you sureeee?" type="submit" value="Destroy">
<input name="authenticity_token" type="hidden" value="Q2xicqELHYHtrwarbtPBe5PT2bZgWV5C+JdcReJI8ig=">

谢谢!

最佳答案

如果你想在 rails 7 中删除带有确认框的东西,你可以试试这个:
button_to (更喜欢恕我直言):

<%= button_to 'Destroy', product, method: :delete,
  form: {data: {turbo_confirm: 'Are you sure?'}} %>
这将呈现一个发送 POST 的 HTML 表单标签。提交请求(确认后),但隐藏 _method具有“删除”值的属性。因此,rails 会将此请求视为具有 DELETE方法。
它将被路由到 products#destroy (或您的路线所说的任何内容)。
link_to :
<%= link_to 'Destroy', product,
  data: {turbo_method: :delete, turbo_confirm: 'Sure?'} %>
这将呈现一个简单的 a带有 data-turbo-method 的标签和 data-turbo-confirm属性。单击此链接将触发一个确认框,如果选择“确定”,则为真正的 DELETE请求将被发送。
如果要结束destroy使用 redirect_to 在您的 Controller 中执行操作, 一些浏览器会重定向到一个新的位置 DELETE方法(导致错误),所以一定要添加status: :see_other参数,如 guides建议。

关于ruby-on-rails - :confirm in rails not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15800092/

相关文章:

ruby-on-rails - 如何使用 ruby​​ 在新窗口中打开链接?

ruby-on-rails - rails, view 为 button_to 而不是 link_to 换行

ruby-on-rails - 删除图标不做确认对话框

ruby-on-rails - 嵌套设置 Rails 应用程序,辅助方法未返回我需要的内容

html - Link_to 方法不适用于 CSS

ruby-on-rails - rails date_select 类不会生效

javascript - 在 Action Mailer 中创建完整的 url 链接而不使用 url 助手

ruby-on-rails - 将一个类添加到link_to会断开链接

ruby-on-rails - 我对用于测试 Rails 应用程序的工具数量感到不知所措,我应该从哪里开始?

javascript - ExtJs - 编辑器网格面板添加用于删除行的列