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

Ruby on rails 如何通过资产管道加载css.erb文件,ruby-on-rails,ruby,asset-pipeline,ruby-on-rails-4,Ruby On Rails,Ruby,Asset Pipeline,Ruby On Rails 4,我希望我的样式表保持简单的css,但我希望使用嵌入式ruby包含一些图像的动态路径: .home {background: #FFF url(<%= image_path 'hippopotamus.jpg' %>) no-repeat; } .home{background:#FFF url()不重复;} 如果我将样式表从.css更改为.css.erb,image\u路径将得到正确的解释,但在部署到生产环境时,资产管道不会对其进行处理。如果我硬编码路径,无论是在生产中还是在开发

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

.home {background: #FFF url(<%= image_path 'hippopotamus.jpg' %>) no-repeat; }
.home{background:#FFF url()不重复;}
如果我将样式表从.css更改为.css.erb,
image\u路径
将得到正确的解释,但在部署到生产环境时,资产管道不会对其进行处理。如果我硬编码路径,无论是在生产中还是在开发中都是错误的,因为它们加载资产的方式不同


如何解决此问题?

您只需预编译资产即可。很简单:

RAILS_ENV=production bundle exec rake assets:precompile
一切都将通过链轮(资产管道)运行,并转储到公共/资产中。只要确保它与应用程序的其余部分一起部署到生产环境中,就可以了

以下是有效的方法:

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

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

config.assets.precompile = ['*.css.erb']
然后,当您运行
RAILS\u ENV=production bundle exec rake assets:precompile时
将生成指纹CSS文件,并正确插入图像路径

这就解决了我的问题

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

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

如何将项目部署到生产服务器?您是否使用
capistrano
及其
load“deploy/assets”
命令?不幸的是,没有。我对部署Rails应用程序非常陌生,还没有安装/学习capistrano。现在,我只是手动进行更改并重新启动unicorn。如果映像路径是您需要erb的唯一原因,我建议您放弃erb并使用SCS。您的问题解决方案的scss示例如下:
background:image url('hippotamus.jpg')no repeat;}
如果我的资产管道配置正确,那么我在问题中显示的代码片段正确地位于
.css.erb
文件中?我同时在努力配置管道,所以我试图排除变量。对我来说,特定文件末尾的
.erb
不起作用。下面是一个对我有用的示例(其中foo和bar是.css.erb文件:
config.assets.precompile+=%w(admin.js admin.css foo.css bar.css)