预编译后,Asset管道不会对图像使用指纹路径

时间:2015-08-07 21:57:27

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

我正在加载SCSS文件中的背景图片bg.jpg图片 style.css.scss

background: url(/assets/bg.jpg)  no-repeat center center;

预编译后,Sprockets会将图像的副本放在 / public / assets 目录中,并带有指纹名称​​ bg-28779d74f8a6fc51d1b46376428bed54.jpg 。我也可以通过 /assets/bg-28779d74f8a6fc51d1b46376428bed54.jpg 链接从浏览器访问图像。

但是当我在浏览器中自动加载页面时,背景图像显示为 而不是 ,当我在Dev Tools中检查该特定元素的CSS时,我看到:< / p>

background: url(/assets/bg.jpg) no-repeat center center;

不应该是

background: url(/assets/bg-28779d74f8a6fc51d1b46376428bed54.jpg ) no-repeat center center;

LE:我还使用rake资产预编译资产:将RAILS_ENV设置为production的预编译。我认为提及这个是个好主意,因为我注意到很多其他人因为这个而出现了问题。 sass-rails helpers "image-url", "asset-url" are not working in rails 3.2.1

1 个答案:

答案 0 :(得分:0)

正确答案已在评论中,但现在是:

样式表中的图片网址(指向资源管道中的图片)应该使用sass帮助器image-url("bg.jpg")而不是url('/assets/bg.jpg')

此帮助程序使用资产管道为每个图像查找正确的路径名。

来源:http://guides.rubyonrails.org/asset_pipeline.html#css-and-sass