6

我希望我的样式表保持纯 css,但我想使用嵌入式 ruby​​ 来包含一些图像的动态路径:

.home {background: #FFF url(<%= image_path 'hippopotamus.jpg' %>) no-repeat; }

如果我将样式表从 .css 更改为 .css.erb ,则会image_path正确解释,但是当我部署到生产环境时,资产管道不会对其进行处理。如果我对路径进行硬编码,那么在生产或开发中都会出错,因为它们加载资产的方式不同。

我该如何解决这个问题?

4

2 回答 2

5

这是有效的:

可以将 .erb 添加到 .css 文件并使用 ruby​​/rails 代码。所以我上面问题中的片段很好。

您必须在 /config/environments/production.rb 中添加这样的一行

config.assets.precompile = ['*.css.erb']

然后,当您运行RAILS_ENV=production bundle exec rake assets:precompile 指纹 CSS 文件时,将生成并正确插入 image_path。

所以这解决了我的问题。

对我来说,.js 文件会自动预编译,而无需我添加任何配置选项。但是 css 或 css.erb 文件不起作用。所以这就是我实际使用的:

config.assets.precompile = ['*.js', '*.css', '*.css.erb']
于 2013-09-10T14:18:15.993 回答
2

您只需要预编译您的资产。这很简单:

RAILS_ENV=production bundle exec rake assets:precompile

一切都将通过 Sprockets(资产管道)运行并转储到公共/资产中。只需确保将其与应用程序的其余部分一起部署到生产环境中就可以了!

于 2013-09-10T01:37:21.840 回答