Rails 3 - Javascript:确认不适用于link_to和button_to:method => :删除

时间:2011-02-14 00:59:49

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

在我的index.html.erb文件中,我正在尝试显示我的对象的标题(“列表”)和正常的“显示”,“编辑”和“销毁”链接和/或按钮。使用:method => :delete and:confirm => “你确定吗?”,link_to或button_to都不会显示javascript确认框。这是我的index.html.erb:

<h2><a href="#" onclick="alert('Hello world!'); return false;">Click Here for a Javascript test</a></h2>   
<table>  
  <tr>
    <th>List Title</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>    
<% @listings.each do |listing| %>
  <tr>
    <td><%= listing.title %></td>
    <td><%= button_to 'Show', listing %></td>
    <td><%= button_to 'Edit', edit_listing_path(listing) %></td>
    <td><%= button_to( 'Destroy', listing, 
                       :confirm => 'Are you sure?', :method => :delete)%> </td>
    <td><%= link_to "Destroy", listing, :confirm => "Are you sure?", :method => :delete %> </td>
  </tr>
<% end %>
</table>

列表顶部的“Hello World”JS确认链接工作正常,所以我很确定不引人注目的javascript对我的应用程序运行正常。 (我还确认我有必要的--javascript_include_tag:defaults和csrf_meta_tag在我的应用程序模板中。)Rails文档确认支持我正在使用的参数(url,:confirm,:method)。但是,button_to或link_to都不会生成由以下指示的JS警报:confirm。另外一点奇怪,使用完全相同的参数,button_to将删除记录而link_to则不会。

任何有关如何调查以解决此问题的建议都将受到赞赏。

谢谢!

4 个答案:

答案 0 :(得分:2)

在我意外地包括Prototype和jQuery之前,我遇到了这个问题。检查正在加载的资源,以确保您没有以某种方式加载这两个框架。

答案 1 :(得分:1)

AFAIK这个问题是由于link_to选项引起的,当它的方法不是GET(http方法)时引起问题,所以我使用了button_to选项,它工作正常

答案 2 :(得分:1)

我刚遇到同样的问题,最新的Rails可用,并通过将:confirm选项移动到html_options部分link_to个参数来解决它,如:

<%= link_to (t '.scenarios.open'), { :controller => 'scenarios', :action => 'show', :name => scenario.name }, :confirm => 'really?' %>

确实,需要jquery-rails宝石,但那个宝石已经在这里并正确链接。

答案 3 :(得分:1)

检查Rails的不显眼的jQuery脚本适配器(jquery_ujs)是否已加载到您的站点中,然后您不必担心第三方javascripts:

// app/assets/javascript/application.js    
//= require jquery_ujs