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

2024-05-03

好的,所以我已经看到了这个问题 https://stackoverflow.com/questions/4475449/link-to-confirm-displays-popup-twice关于这个问题是由 jQuery 或 Prototype 的多个链接引起的,但我可以确认我只链接到 jQueryonce在整个页面上。我的问题是这样的:当我有一个link_to确认删除后,弹出窗口会显示两次。这是我的模板中的适用代码(用 Slim 编写):

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

我在跑导轨3.1.0打开 Asset Pipeline 后,gem 'jquery-rails' in my Gemfile,以下是我的application.js文件(由 Sprockets 为资产管道编译)。

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

I have underscore.js and backbone.js in my /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>

subdata.js其中有一些特定于 Backbone 的代码;没有什么会选择再次包含 jQuery。那么到底是怎么回事呢?我的项目中没有任何额外的 jQuery 文件;这一切都是通过jquery-rails宝石。是什么原因导致我的:confirm发射两次的方法?

EDIT:我之前在 Rails 3.1 的 RC5 上看到过这个,但现在我也在 Rails 3.1 上看到了它。


这发生在我身上,因为我跑了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:clean耙任务。这将导致脚本文件再次被动态提供。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 3.1 与 Asset Pipeline,link_to :确认消息显示两次? 的相关文章

随机推荐