在我的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则不会。
任何有关如何调查以解决此问题的建议都将受到赞赏。
谢谢!
答案 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