0

啊,我对这些资产感到头疼:预编译的东西。当我第一次将应用程序推送到 heroku 时,我在本地预编译了它们。这一切都很好,但是它不会接受我在开发之后对 css 文件所做的任何更改,因为它服务于预编译的资产。所以现在,对于视觉上的东西,我必须做 rake assets:clean。我做了我想在本地应用的更改,没有问题。然后,我再次预编译资产,并将更改推送到heroku,但现在似乎它甚至看不到我的资产。页面只是白色的,上面有东西,没有任何样式。

请帮忙!

4

1 回答 1

0

您在 heroku 系统的 2 个部分遇到问题:


资产指纹

资产指纹基本上是在资产文件的末尾添加一个 MD5 哈希,以保持它们的唯一性并依赖于它们在文件中的任何关系。这很重要,因为每次编译资产时,它们都会生成这些新文件名,这会导致标准 CSS 混乱

您需要对 CSS 中的所有资产引用执行此操作:

将您的 CSS 文件更改为 .css.scss

与静态 CSS 不同,SCSS 是动态编译的,可以解析 ruby​​ 代码。这意味着您可以像这样引用您的资产:

background-url: asset_url('/nav_bar/nagivgation_bg.png');

为您的 CSS 文件执行此操作,引用应该没问题


提供静态资产

Heroku 需要你在 Rails 中运行静态资源。这很简单:

#/config/environments/production.rb
config.serve_static_assets = true

更新

以下是一些实时代码,用于演示在 .scss 文件中包含动态帮助程序的位置:

.confirmation .action_bar a.confirm {
        color: #fff;
        background: asset_url('modals/confirm_button/bg.png') top repeat-x;
        position: relative;
        margin: 0 0 0 7px;
}
于 2013-10-27T18:35:25.400 回答