我刚开始使用 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/