【发布时间】:2013-12-10 10:04:15
【问题描述】:
这很奇怪……
我布局的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,这是怎么回事?
【问题讨论】:
-
您是否在开发中运行过
rake assets:precompile? -
不这么认为,但无论如何我按照你的建议拨打了
bundle exec rake assets:clean。 -
@Darmen 不知道你是否已经解决了你的问题。如果没有,您是否尝试将
config.serve_static_assets = false添加到您的development.rb文件中? -
开发中
application.js的内容是什么? (严重问题,请在此处发布代码) -
@Paul,也许
config.serve_static_assets = false解决了这个问题,因为之前(也回复@Michael)application.js在开发中的内容再次是清单中包含的所有javascript,而现在,总是在开发中,我看到所有对每个 javascript 的调用和以前一样,但application.js只包含注释行(从“这是一个清单..”到“在..需要下面。”并且没有 javascript 代码了. 这是正确的行为吗?无论如何,现在每个 javascript 实际上只被调用一次。仍在调查,但问题似乎已解决!
标签: javascript ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 asset-pipeline