javascript_include_tag :application loads javascripts twice in development environment

标签 javascript ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 asset-pipeline

这很奇怪......

我布局的 head 部分中的这行代码:

<%= javascript_include_tag :application %>

此 html 中的结果:

<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-ui.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery.prettyPhoto.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery.qtip.min.js?body=1" type="text/javascript"></script>
<script src="/assets/dataTables/jquery.dataTables.js?body=1" type="text/javascript"></script>
<script src="/assets/datatable-enables.js?body=1" type="text/javascript"></script>
<script src="/assets/modernizr-1.7.min.js?body=1" type="text/javascript"></script>
<script src="/assets/qtips.js?body=1" type="text/javascript"></script>
<script src="/assets/pagination.js?body=1" type="text/javascript"></script>
<script src="/assets/payments.js?body=1" type="text/javascript"></script>
<script src="/assets/replies.js?body=1" type="text/javascript"></script>
<script src="/assets/searches.js?body=1" type="text/javascript"></script>
<script src="/assets/static_pages.js?body=1" type="text/javascript"></script>
<script src="/assets/user.js?body=1" type="text/javascript"></script>
<script src="/assets/gmaps4rails/gmaps4rails.base.js?body=1" type="text/javascript"></script>
<script src="/assets/gmaps4rails/gmaps4rails.bing.js?body=1" type="text/javascript"></script>
<script src="/assets/gmaps4rails/gmaps4rails.googlemaps.js?body=1" type="text/javascript"></script>
<script src="/assets/gmaps4rails/gmaps4rails.mapquest.js?body=1" type="text/javascript"></script>
<script src="/assets/gmaps4rails/gmaps4rails.openlayers.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery.rateit.min.js?body=1" type="text/javascript"></script>
<script src="/assets/feedbacks.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>

如您所见,它为每个 javascript 资源生成一个调用对已编译的 applications.js 的调用,当然也包括每个 javascript 资源

因此,每个 javascript 都被调用了两次!

这只发生在开发环境中,而在生产环境中生成的 html 准确地说只是:

<script src="/assets/application.js?body=1" type="text/javascript"></script>

这是我的application.js:

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require jquery.prettyPhoto
//= require jquery.qtip.min
//= require dataTables/jquery.dataTables
//= require datatable-enables
//= require modernizr-1.7.min
//= require qtips
//= require pagination
//= require payments  
//= require replies
//= require searches
//= require static_pages
//= require user
//= require gmaps4rails/gmaps4rails.base 
//= require gmaps4rails/gmaps4rails.bing 
//= require gmaps4rails/gmaps4rails.googlemaps
//= require gmaps4rails/gmaps4rails.mapquest
//= require gmaps4rails/gmaps4rails.openlayers
//= require jquery.rateit.min
//= require feedbacks

我正在使用 Rails 3.2.13,这是怎么回事?

最佳答案

我之前的 Rails 应用程序也遇到过同样的问题。包括行

config.serve_static_assets = false

development.rb 文件中解决了这个问题。 (根据 ruby​​onrails.org,此配置项在开发中默认为 true,在生产中默认为 false,这就是您在生产中没有遇到此问题的原因。)

此设置决定 Rails 是否应该在 public/ 目录中提供静态断言。在生产中,网络服务器将处理此任务,因此设置默认为 false

您可能想看看这些帖子:

正如@gertas 在这篇文章中所说:

Adding config.serve_static_assets = false to development.rb will prevent loading files from /public/assets.

最后,您还可以使用位于 http://guides.rubyonrails.org/configuring.html 的 Rails 配置指南。

它对 Rails 应用程序中的配置项进行了全面的解释。

关于javascript_include_tag :application loads javascripts twice in development environment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20491363/

相关文章:

ruby-on-rails - ElasticSearch小平面滚动周( rails/轮胎)

ruby-on-rails - 如何获取 ActiveRecord 在 Ruby on Rails 中执行的最后一个 SQL 查询?

css - css的rails缓存问题

php - 将回显或返回的字符串从 php 获取到 jquery/ajax 的最简单方法是什么

javascript - 尝试使用 Pusher 读取交换数据

mysql - 如何为一个父id找到两个不同的匹配数据?

仅适用于 Rails 3.1 中某些 View 的 Javascript 文件

ruby-on-rails - Docker,Rails 3.2,依赖项问题

javascript - 如何在 JSON 文件中添加图像?

javascript - 当我单击下一个/上一个按钮时,jQuery DatePicker 消失