我在Rails 3.1的资产管道中遇到了问题。 在开发环境中资产被包含了两次:
<script src="/assets/main_new.js?body=1" type="text/javascript"></script>
<script src="/assets/pagenav.js?body=1" type="text/javascript"></script>
<script src="/assets/tours.controller.js?body=1" type="text/javascript"></script>
<script src="/assets/tours.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>
Rails以某种方式编译并包含了application.js,因此所有的脚本都被包含了两次 - 作为单独的文件和在application.js中。
在生产环境中预编译的资产没有问题。
development.rb
config.assets.compress = false
config.assets.debug = true
production.rb
# Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_assets = false
# Compress both stylesheets and JavaScripts
config.assets.compress = true
config.assets.js_compressor = :uglifier
config.assets.css_compressor = :scss
config.assets.compile = false
config.assets.digest = true
application.rb
config.assets.enabled = true
rake assets:clean
命令。虽然开发模式下可能仍会提供application.js
文件,但不应包含其他 JS 文件。 - firienpublic/assets
中的资源后,不要忘记清除浏览器缓存。 - Nicolas Goy