我已经为Heroku部署了一个新的Rails 4应用程序,但我的样式表和图像不起作用。对于样式表。我用:
<%= stylesheet_link_tag "screen", media: "all" %>
对于图像,我使用CSS编码的路径,如:
<img class="logo small" src="/assets/logo.jpg" alt="logo">
这些路径在我的本地计算机上运行良好,但在部署中中断。我认为这是由于Heroku Cedar堆栈没有提供静态资产,并在production.rb中将此设置设置为true
:
config.serve_static_assets = false
这并没有解决它。我错过了什么?谢谢!
答案 0 :(得分:0)
Heroku有关于在Heroku上托管Rails4应用程序的具体说明。您的Gemfile中是否有rails_12factor
gem用于制作?
https://devcenter.heroku.com/articles/getting-started-with-rails4#heroku-gems
另外,我建议切换到使用rails帮助程序来处理图像,因为它可以更轻松地处理生产中的资产管道 -
<%= image_tag 'logo', class: 'logo small' %>
答案 1 :(得分:0)
我已经弄明白了 - 这个问题是由于git存储库运行不正常。我现在正在为样式表和图像使用资产管道 - 但我必须删除本地git存储库和远程应用程序并从头开始启动所有内容。这些是我采取的步骤:
1)在application.css中声明所有样式表,如下所示:
*= require_self
*= require frameless
*= require typography
*= require grid
*= require layout
(我的旧应用程序使用了screen.css
文件,我在其中导入了上述文件。这不适用于AP - 每个文件都必须直接在application.css
清单文件中引用,正确的顺序,以便CSS规则与正确的优先级叠加。为了确保这一点,您可能希望删除默认存在的require_tree
指令。
2)将所有HTML图像路径更改为rails helper image_tag
标记。
3)运行RAILS_ENV=production bundle exec rake assets:precompile
以生成包含所有预编译资产as described here的public/assets
目录。
将所有内容检入新的git存储库(删除了新的),然后按Heroku's instructions on how to deploy a Rails 4 app进行操作。
宾果!