:确认导轨无法正常工作

时间:2013-04-03 23:34:07

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

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

谢谢!

5 个答案:

答案 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列入白名单,但它对我有用。