我正在阅读"Rails Tutorial: Learn Rails 3.2 By Example"书,但我在第4章末尾有一点问题。
在本书中,您下载了Blueprint css框架,将其添加到/ vendor / assets / stylesheets,然后使用以下命令在layouts / application.html.erb中引用它:
<%= stylesheet_link_tag 'blueprint/screen', :media => 'screen' %>
<%= stylesheet_link_tag 'blueprint/print', :media => 'print' %>
<!--[if lt IE 8]><%= stylesheet_link_tag 'blueprint/ie' %><![endif]-->
这在我的本地计算机上工作正常,但是当我使用
将其部署到heroku(雪松)时$ bundle exec rake assets:precompile
$ git push heroku
我查看网站时出错:
app[web.1]: Completed 500 Internal Server Error in 71ms
app[web.1]: ActionView::Template::Error (blueprint/screen.css isn't precompiled):
app[web.1]: 4: <%= stylesheet_link_tag 'blueprint/screen', media: 'screen' %>
app[web.1]: 5: <%= stylesheet_link_tag 'blueprint/print', media: 'print' %>
目前,我能够让它工作的唯一方法是通过将其放入production.rb来手动告知有关蓝图样式表的信息。
config.assets.precompile += %w( blueprint/screen.css blueprint/print.css blueprint/ie.css )
我做错了吗?有没有办法让rake assets:precompile
自动缩小/压缩/ vendor / assets /中的所有文件(如果存在,这样做是否有缺点)?
提前感谢任何建议。
答案 0 :(得分:1)
如果你想直接引用管道中的文件,就像你在这里一样,那么你应该将这些文件添加到预编译数组中,以便它们在生产中工作。
这没有任何问题。
您可以为供应商/资产预编译添加一个包罗万象的规则,但我个人认为最好根据需要添加内容,以便了解应用中发生了什么。
答案 1 :(得分:1)
https://stackoverflow.com/a/7541958/304690所述的方法为我解决了这个问题。
答案 2 :(得分:-3)
我遇到了同样的问题。但是在我修改了config / environments / production.rb
上的行代码之后OLD:config.assets.compile = false到NEW:config.assets.compile = true
commit -am“......” git push git push heroku
最后它起作用