rails资产管道不包括application.js。
中所需的文件呈现给浏览器的唯一javascript文件是application.js,并且require行不会被编译为包含标记,因为它们应该是:
// 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_ujs
//= require twitter/bootstrap
//= require bootstrap
//= require_tree .
;
在config / application.rb中我有config.assets.enable = true
我正在使用rails 3.2.8,我尝试使用rvm安装ruby 1.9.3-p398和2.0.0-p0。
如何让application.js包含所需的文件?
编辑:看起来这个问题的锁最近解锁了,活动也增加了。自从我研究这个问题已经有一段时间了,代码不再存在了。如果我没记错,我重新安装了ruby和rails,这解决了问题。
我应该关闭这个问题吗?在这种情况下,正确的程序是什么?
答案 0 :(得分:13)
我在这里回答:
Rails 3.2.8 Application.js and Application.css are not working as expcted
以下是文字:
我也遇到过这个问题,但是有了更新版本的Rails和 红宝石。
检查日志,我正在从Rails缓存中获得javascript.js 因为服务器没有看到文件中的更改。我去了,感动了 需要线路(只有一个)来告诉Rails有变化 该文件并重新编译/使用。 Wellm为我做了!
希望它对某人有帮助。
另一项重要发现是升级Gemfile中的sprockets gem。
我有2.2.1版本并且在升级到2.2.2后出现问题
gem 'sprockets', '2.2.2'
答案 1 :(得分:3)
如果您要从3.0.x - 3.1.x升级并运行到此问题升级到3.2.x,它可能会解决此问题。
我最近从3.0 - 3.1.12升级了一个应用程序,发现资产清单无法使用Ruby 1.9.3,Ruby 2.0或Ruby 2.1.1。然后我继续升级到3.2.17,一切似乎都在使用Ruby 2.1.1正常工作。
希望这有助于其他可能遇到此问题升级的人。
答案 2 :(得分:1)
这样做的一个常见原因是资产是在公共/资产中编译和找到的,在这种情况下,Rails不会重新编译它们。如果你在这里有资产,并且没有将config.serve_static_assets设置为false,那么Rails将不会重新编译你的资产:
config.serve_static_assets = false
因此,如果你在公共/资产中有预编译的东西,要么删除它们,要么将上面的行添加到development.rb
答案 3 :(得分:0)
您是否将引导程序文件复制/粘贴到vendor / assets文件夹或app / assets中?资产管道默认只包含app / assets文件夹,而不包括lib / assets或vendor / assets。要在管道中包含供应商/资产,请在app / assets / javascript / application.js文件中输入此命令:
//= require_tree ../../../vendor/assets/javascripts/
为CSS文件执行相同的操作:
*= require_tree ../../../vendor/assets/stylesheets/
我知道它在文件顶部的注释中说app,lib或vendor文件夹中的任何文件都将包含在内,但我发现情况并非如此。我无法解释原因,但请参阅here了解我的来源。尝试上述命令,或在app / assets文件夹中包含bootstrap文件。希望有所帮助。