10

在我的 index.html.erb 文件中,我试图显示我的对象的标题(“列表”)以及正常的“显示”、“编辑”和“销毁”链接和/或按钮。使用 :method => :delete 和 :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 都不会生成 :confirm 指示的 JS 警报。另一点奇怪的是,使用完全相同的参数,button_to 将删除一条记录,而 link_to 不会。

任何有关如何调查以解决此问题的建议将不胜感激。

谢谢!

4

4 回答 4

2

在我不小心同时包含 Prototype 和 jQuery 之前,我遇到了这个确切的问题。检查正在加载的资源,以确保您没有以某种方式加载这两个框架。

于 2011-02-14T01:32:43.057 回答
1

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

于 2011-04-06T10:40:00.263 回答
1

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

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

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

于 2013-01-22T20:48:55.183 回答
1

检查 Rails 的用于 jQuery (jquery_ujs) 的 Unobtrusive 脚本适配器是否已加载到您的站点中,那么您无需担心第三方 javascript:

// app/assets/javascript/application.js    
//= require jquery_ujs
于 2014-01-28T02:16:33.993 回答