作为 RoR 新手,我一直在阅读/试图了解 Assets 管道的工作原理,以及在让我的样式表/javascript 可用于我的应用程序时它如何影响开发与生产,但我仍然感到困惑.
在我的应用程序中,我从我的 application.css/.js 文件中调用常用的 CSS/JS 文件,然后根据需要显式调用其他 .css/.js 文件,例如:
<%= stylesheet_link_tag 'reset.css',"application",'bootstrap.min.css', 'bootstrap-responsive.min.css','font-awesome.css','http://fonts.googleapis.com/css?family=Raleway:400,600,700', 'fancybox.css' %>
<%= javascript_include_tag "application", 'modernizr.js', 'bootstrap.js'%>
这在开发中工作得很好,但是一旦我将我的代码推送到生产环境中,显式调用的 .css/.js 文件就不再工作了。如果我查看源代码,我会看到文件被正确调用到页面中。
为了使这项工作投入生产,我缺少哪些步骤?感谢您的时间和帮助。
更新: 根据 Martin M 的建议,我将 .css/.js 添加到我的 config/environments/production.rb 中。
例如:
config.assets.precompile += %w(reset.css grepfrut.css jquery-ui.css base-admin.css reports.css signin.css daterangepicker.css bootstrap.min.css bootstrap-responsive.min.css font-awesome.css fancybox.css)
config.assets.precompile += %w(modernizr.js bootstrap.js ddsmoothmenu.js wice_grid.js date.js daterangepicker.js signin.js)
然后我重新预编译,当我在我的 public/assets 中看到这些文件时,javascripts 仍然无法工作,并且一些 CSS 在 Chrome 中无法工作。我已尝试清除浏览器中的所有内容,但 Chrome、Firefox 和 Safari 仍然无法正常工作。
不确定它是否值得一提,但由于我的托管服务提供商,我目前被迫在 Ruby 1.8.7-p370 中运行它。稍后我将转向对 RoR 更友好的提供商。
再次感谢。
最佳答案
application.css
和 application.js
未加载的资源(js 和 css)不会 自动编译抽取 Assets :预编译
。
您必须通过在 config/environment/production.rb
中声明来明确包含它们:
config.assets.precompile += %w(reset.css bootstrap.min.css bootstrap-responsive.min.css font-awesome.css fancybox.css)
config.assets.precompile += %w(modernizr.js bootstrap.js)
生成的production.rb
中有注释示例。
这有点令人困惑,因为在开发
中, Assets 可以任何方式加载。
是的,每次更改 css/js 时都必须运行 rake assets:precompile
。
关于javascript - Rails : Stylesheets/Javascripts work in Dev, 不是产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17068848/