Heroku上的Rails 4有一个奇怪的问题。当图像被编译时,它们被添加了散列,但从CSS中引用这些文件时没有适当的名称调整。这就是我的意思。我有一个叫logo。png的文件。然而,当它出现在heroku上时,它被视为:
/assets/logo-200a00a193ed5e297bb09ddd96afb953.png
然而,CSS仍然声明:
background-image:url("./logo.png");
结果是:图像无法显示。有人遇到过这种情况吗?如何解决这个问题?
Heroku上的Rails 4有一个奇怪的问题。当图像被编译时,它们被添加了散列,但从CSS中引用这些文件时没有适当的名称调整。这就是我的意思。我有一个叫logo。png的文件。然而,当它出现在heroku上时,它被视为:
/assets/logo-200a00a193ed5e297bb09ddd96afb953.png
然而,CSS仍然声明:
background-image:url("./logo.png");
结果是:图像无法显示。有人遇到过这种情况吗?如何解决这个问题?
当前回答
在Rails 4中,只需使用.hero { 背景图片:url(“picture.jpg”); }在你的style.css文件,只要背景图像是隐藏在app/assets/images。
其他回答
只有这个片段不适合我:
background-image: url(image_path('transparent_2x2.png'));
但是要重命名stylename。SCSS到stylename.css.scss帮助我。
参考Rails文档,我们可以看到有几种方法可以链接到css中的图像。请参阅第2.3.2节。
首先,如果您的css文件是sass文件,请确保它具有.scss扩展名。
接下来,你可以使用ruby方法,这真的很难看:
#logo { background: url(<%= asset_data_uri 'logo.png' %>) }
或者你可以使用更好的特定形式:
image-url("rails.png") returns url(/assets/rails.png)
image-path("rails.png") returns "/assets/rails.png"
最后,你可以使用一般形式:
asset-url("rails.png") returns url(/assets/rails.png)
asset-path("rails.png") returns "/assets/rails.png"
链轮一起萨斯有一些漂亮的帮手,你可以用它来完成工作。链轮只会在样式表文件扩展名为.css时处理这些helper。或。css.sass。
图像特定的帮助器:
background-image: image-url("logo.png")
不可知论者的助手:
background-image: asset-url("logo.png", image)
background-image: asset-url($asset, $asset-type)
或者如果你想在css文件中嵌入图像数据:
background-image: asset-data-url("logo.png")
在Rails 4中,只需使用.hero { 背景图片:url(“picture.jpg”); }在你的style.css文件,只要背景图像是隐藏在app/assets/images。
有趣的是,如果我使用'background-image',它不起作用:
background-image: url('picture.png');
但是仅仅是“背景”,它就做到了:
background: url('picture.png');