jquery – Rails 3.1与资产管道,link_to:确认消息显示两次?

好的,所以我看到 this question关于这个问题是由jQuery或Prototype的多个链接引起的,但我可以确认我只是在整个页面链接到jQuery一次。我的问题是这样的:当我有一个link_to确认删除,弹出显示两次。以下是我的模板中适用的代码(用Slim编写):
link_to('Destroy',depot_path(@depot.id),:confirm => "Really?",:method => :delete)

我正在运行Rails 3.1.0,资产管道打开,宝石“jquery-rails”在我的Gemfile中,下面是我的application.js文件(由资源管道的Sprockets编译)。

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

我的/ vendor / assets / javascripts /目录中有underscore.js和backbone.js,链轮似乎找到了。我还搜索链接服务的application.js文件,而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进行管理。是什么原因造成的:确认方法开火两次?

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

解决方法

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

在开发模式<%= javascript_include_tag“应用程序”%>将扩展到多个< script>标签,一个为/ require要求的每个文件,还有一个仅包含自己的内容的application.js。

解决方案是手动删除整个公共/资产目录,或使用资产:clean rake任务。这将导致脚本文件再次动态。

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...