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

时间:2013-09-09 18:18:08

标签: ruby-on-rails ruby asset-pipeline ruby-on-rails-4

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

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

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

如何解决此问题?

2 个答案:

答案 0 :(得分: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']

答案 1 :(得分:2)

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

RAILS_ENV=production bundle exec rake assets:precompile

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

相关问题