部署到Heroku时样式表和图像路径损坏

时间:2013-11-29 14:07:12

标签: ruby-on-rails heroku deployment static asset-pipeline

我已经为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

这并没有解决它。我错过了什么?谢谢!

2 个答案:

答案 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 herepublic/assets目录。

将所有内容检入新的git存储库(删除了新的),然后按Heroku's instructions on how to deploy a Rails 4 app进行操作。

宾果!