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