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

Ben*_*ger 16 jquery ruby-on-rails ruby-on-rails-3.1 sprockets asset-pipeline

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

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

我运行的Rails 3.1.0与资产管道打开,用gem 'jquery-rails'在我Gemfile,下面是我的application.js文件(这是由链轮的资产管道编译).

//= require jquery
//= require jquery_ujs
//= require 'underscore'
//= require 'backbone' 
Run Code Online (Sandbox Code Playgroud)

underscore.jsbackbone.js我的/vendor/assets/javascripts/目录中,链轮似乎找到了那些没关系.我还搜索了application.jssprockets提供的文件,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>
Run Code Online (Sandbox Code Playgroud)

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

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

Mat*_*man 25

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

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

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