2013-06-12 89 views
1

作为一个RoR新手,我一直在阅读/试图理解资产管道是如何工作的,以及它如何影响开发与生产,以及如何使我的样式表/ JavaScripts可用于我的应用程序,但我仍然感到困惑。Rails:Stylesheets/Javascripts work in Dev,not Prod

在我的应用程序,我经常打电话从我application.css使用CSS/JS文件/ .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 Martin的建议,我将.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) 

我再重新预编译,虽然我看到在我的公共/资产的文件,JavaScript的将是仍然没有工作,和一些CSS不会在Chrome中工作。我已经尝试清除浏览器中的所有内容,但仍尝试使用Chrome,Firefox和Safari无法正常工作。

不知道它是否值得一提,但由于我的托管服务提供商,我目前被迫在Ruby 1.8.7-p370中运行它。我将在稍后转向更友善的供应商。

再次感谢。

+0

这可能是愚蠢的问,但你之前运行'rake assets:precompile'吗? – MrYoshiji

+0

每次生产时都需要这样做吗?比如当我编辑/添加.css/.js? – user464180

+0

我刚刚在生产中运行它。一些样式现在正确显示,但我的JavaScript仍然缺失。 – user464180

回答

2

资产(JS和CSS)不是由application.cssapplication.js加载是通过rake assets:precompile自动编译。

你必须说在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一个注释过的例子。

这有点令人困惑,因为在development资产以任何方式加载。
是的,你必须运行rake assets:precompile每次你改变一下你的CSS/JS。

+0

谢谢。请参阅我上面的更新,并让我知道我还能做些什么。非常感激。 – user464180

+0

您是否在Fireforx/firebug,Chrome等的JavaScript控制台中看到任何错误?同时检查萤火虫的网络面板。 –

+0

不幸的是没有错误。 – user464180

0

您应该运行rake assets:precompile以使其在生产环境中正常工作。