:确认导轨无法正常工作

jam*_*ree 14 ruby-on-rails link-to button-to

我刚刚开始使用ruby在rails上进行编码,而且我一直在关注一个使用比我正在使用的更过时版本的rails的指南.我正在使用3.2.12

这是我的代码:

<%= button_to 'Destroy', product, :method => "delete", :confirm => 'Are you sure?'  %>
Run Code Online (Sandbox Code Playgroud)

根据我的理解,这些是传递给rails的符号,然后转换为html或javascript操作,然后弹出消息框并删除对象(如果适用).上面的代码会破坏对象,但不会弹出确认框.为什么是这样?另外,我首先得到以下内容:

<%= link_to 'Destroy', product, :method => "delete", :confirm => 'Are you sure?'  %>
Run Code Online (Sandbox Code Playgroud)

在任何情况下,使用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=">
Run Code Online (Sandbox Code Playgroud)

谢谢!

cra*_*igq 59

我必须在data属性中添加我的confirm属性才能使它工作.我正在使用带有引导程序的rails 4.我希望这可以帮助那些有这个问题的人.

link_to 'Delete', @rule, method: :delete, data: { confirm: 'Are you sure you want to delete this alert?' }
Run Code Online (Sandbox Code Playgroud)


Ben*_*enj 10

这依赖于jQuery,确保您拥有以下内容:

在你的Gemfile中

group :assets do
  gem 'jquery-rails'
end
Run Code Online (Sandbox Code Playgroud)

在您的assets/javascripts/application.js文件中,在该行之前 //= require_tree .

//= require jquery
//= require jquery_ujs
Run Code Online (Sandbox Code Playgroud)


Fre*_*red 5

link_to和button_to之间的区别是HTTP动词.link_to发出GET请求,button_to发出POST请求.使用RESTful路由,该delete操作是对controller/id的POST请求.如果您向控制器/ id发出GET ,则会将其分派给该show操作.

AIUI,link_to与GET动词以外的任何内容都是一个坏主意.一,右键单击不保留动词.第二,你不希望机器人爬行页面跟随链接,从而触发delete操作,即使你可能需要登录才能真正修改数据库.