Rails 3.1 with Asset Pipeline,link_to:确认消息显示两次?

好的,所以我看到这个问题是由jQuery或Prototype的多个链接引起的,但我可以确认我只在整个页面链接到jQuery 一次 。 我的问题是:当我有一个确认删除的link_to ,弹出窗口显示两次。 这是我模板中的适用代码(用Slim编写):

 link_to('Destroy', depot_path(@depot.id), :confirm => "Really?", :method => :delete) 

我在运行资产管道时运行Rails 3.1.0 ,在我的Gemfile gem 'jquery-rails' ,以下内容在我的application.js文件中(由Sprockets为资产管道编译)。

 //= require jquery //= require jquery_ujs //= require 'underscore' //= require 'backbone' 

我的/vendor/assets/javascripts/目录中有underscore.jsbackbone.js ,sprockets似乎找不到那些。 我还搜索了sprockets提供的application.js文件,jQuery只在那里一次,jQuery UJS只在那里一次。 这是我的页面呈现时的头部样子(我省略了显示的csrf-token值,FWIW)。

   Administration        

subdata.js有一些特定于Backbone的代码; 没有什么可以选择再次包含jQuery。 这是什么交易? 我的项目中没有任何其他jQuery文件; 它都是通过jquery-rails gem管理的。 是什么导致我:confirm方法两次开火?

编辑 :我以前在Rails 3.1的RC5上看到了这个,但现在我也在Rails 3.1实际上看到了它。

这发生在我身上,因为我运行了rake assets:precompile在我的开发环境中rake assets:precompile ,导致创建public/assets/application.js 。 这使得/assets/application.js请求由这个静态文件提供,该文件包含编译在一起的public/assets/application.js中的所有// require脚本,导致它们再次加载。

在开发模式下, <%= javascript_include_tag "application" %>将扩展为多个标记,一个用于// require行所需的每个文件,还有一个用于仅包含其自己内容的application.js

解决方案是手动删除整个public/assets目录或使用assets:clean rake任务。 这将导致脚本文件再次动态提供。

这也发生在我身上。 删除“// = require_tree”。 从application.js修复它。

在application.js中提及jquery和jquery_ujs的名称,如果还没有运动,那么请使用jquery和jquery_ujs的压缩版本。

要么

将gem’jquery-rails’添加到gemfile中然后尝试。

可能你有rails.js文件。 删除它,然后再试一次。 它必须工作。

FON