如何通过资产管道加载css.erb文件

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

.home {background: #FFF url() no-repeat; } 

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

我该如何解决这个问题?

这是有效的:

可以将.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'] 

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

 RAILS_ENV=production bundle exec rake assets:precompile 

一切都将通过Sprockets(资产管道)运行并转储到公共/资产中。 只需确保将其与应用程序的其余部分一起部署到生产中,这应该是全部!