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");
结果是:图像无法显示。有人遇到过这种情况吗?如何解决这个问题?
当前回答
这应该能让你每次都做到。
background-image: url(<%= asset_data_uri 'transparent_2x2.png'%>);
其他回答
当使用宝石'sass-rails'时,在Rails 5, bootstrap 4中,以下对我有用,
在.scss文件:
background-image: url(asset_path("black_left_arrow.svg"));
视图文件(例如.html.slim):
style=("background-image: url(#{ show_image_path("event_background.png") })");
在某些情况下,以下几点也适用
Logo {background: url(<%= asset_data_uri ' Logo .png' %>)}
来源:http://guides.rubyonrails.org/asset_pipeline.html
在Rails 4中,你可以像这样在你的.SCSS文件中引用位于assets/images/中的图像:
.some-div {
background-image: url(image-path('pretty-background-image.jpg'));
}
当你以开发模式启动应用程序时(localhost:3000),你应该会看到如下内容:
background-image: url("/assets/pretty-background-image.jpg");
在生产模式下,你的资产将有缓存助手编号:
background-image: url("/assets/pretty-background-image-8b313354987c309e3cd76eabdb376c1e.jpg");
链轮一起萨斯有一些漂亮的帮手,你可以用它来完成工作。链轮只会在样式表文件扩展名为.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")
你可以添加到你的css .erb扩展名。Ej: style.css.erb
然后你可以放:
background: url(<%= asset_path 'logo.png' %>) no-repeat;