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.js和backbone.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任务.这将导致脚本文件再次动态提供.
| 归档时间: |
|
| 查看次数: |
3898 次 |
| 最近记录: |