好的,所以我已经看到这个问题是由 jQuery 或 Prototype 的多个链接引起的,但我可以确认我在整个页面上只链接到 jQuery一次。我的问题是这样的:当我link_to
确认删除时,弹出窗口显示两次。这是我模板中的适用代码(用 Slim 编写):
link_to('Destroy', depot_path(@depot.id), :confirm => "Really?", :method => :delete)
我在打开资产管道的情况下运行Rails 3.1.0gem 'jquery-rails'
,在我的文件Gemfile
中,以下是我的application.js
文件(由 Sprockets 为资产管道编译)。
//= require jquery
//= require jquery_ujs
//= require 'underscore'
//= require 'backbone'
我有underscore.js
andbackbone.js
在我的/vendor/assets/javascripts/
目录中,并且 sprockets 似乎可以找到那些。我还搜索了application.js
sprockets 提供的文件,jQuery 只存在一次,jQuery UJS 只存在一次。这就是我的页面呈现时的样子(我省略了csrf-token
显示的值,FWIW)。
<head>
<meta content="text/html; charset=utf-8" http-equiv="content-type">
<title>Administration</title>
<link href="/assets/screen.css" media="screen" rel="stylesheet" type="text/css" />
<script src="/assets/application.js" type="text/javascript"></script>
<meta content="authenticity_token" name="csrf-param" />
<meta content="--token--omitted--" name="csrf-token" />
<script src="/assets/common/subdata.js" type="text/javascript"></script>
<link href="/assets/show.css" media="screen" rel="stylesheet" type="text/css" />
</head>
subdata.js
有一些特定于 Backbone 的代码;没有什么会选择再次包含 jQuery。那么有什么关系呢?我的项目中的任何地方都没有额外的 jQuery 文件;这一切都是通过jquery-rails
gem 管理的。是什么导致我的:confirm
方法触发两次?
编辑:我以前在 Rails 3.1 的 RC5 上看到过这个,但现在我也在 Rails 3.1 上看到过。