我刚开始使用ruby在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=">
谢谢!
答案 0 :(得分:58)
我必须在data属性中添加我的confirm属性才能使其工作。我正在使用带有引导程序的rails 4。我希望这可以帮助那些有这个问题的人。
link_to 'Delete', @rule, method: :delete, data: { confirm: 'Are you sure you want to delete this alert?' }
答案 1 :(得分:10)
这依赖于jQuery,确保您拥有以下内容:
你的Gemfile中的
group :assets do
gem 'jquery-rails'
end
在您的assets / javascripts / application.js文件中,在//= require_tree .
行
//= require jquery
//= require jquery_ujs
答案 2 :(得分:5)
link_to和button_to之间的区别是HTTP动词。 link_to发出GET请求,button_to发出POST请求。使用RESTful路由,delete
操作是对 controller / id 的POST请求。如果您向 controller / id 发出GET,则会将其分派到show
操作。
AIUI,link_to与GET动词以外的任何内容都是一个坏主意。一,右键单击不保留动词。第二,你不希望机器人抓取页面来跟踪链接,从而触发delete
操作,即使你可能需要登录才能真正修改数据库。
答案 3 :(得分:3)
感觉相当愚蠢,但adblock阻止了消息框。对于那个很抱歉。一切都很顺利,我刚刚禁用adblock。
答案 4 :(得分:0)
我在Chrome中运行了一个弹出窗口拦截器。我刚刚将http://localhost:3000
列入白名单,但它对我有用。