我将应用程序从3.2.12切换到4.0.0.rc1。当我之后在制作中看到它时,背景图像消失了。我的其他图像资源都没有问题。
在我的日志中,我看到所有成功渲染的图像都有一个摘要添加到它们的末尾,如下所示:
2013-05-12T19:57:05.856277+00:00 heroku[router]: at=info method=GET path=/asset/explore-9ec2a1cfd4784133755637f6ef6d5673.png host=xxx.herokuapp.com fwd="69.140.148.75" dyno=web.1 connect=3ms service=5ms status=200 bytes=4064
我不成功的背景图片上没有摘要,加上404响应代码:
2013-05-12T19:57:05.736354+00:00 heroku[router]: at=info method=GET path=/assets/background.png host=xxxx.herokuapp.com fwd="69.140.148.75" dyno=web.1 connect=2ms service=7ms status=404 bytes=728
在production.rb文件中,有一个配置行,可以用于缓存目的:
# Generate digests for assets URLs
config.assets.digest = true
这是背景的CSS:
body {
background-image: url('background.png');
background-attachment: fixed;
background-position: 100% 100%;
background-repeat: no-repeat;
}
我的结论是我的CSS文件试图获取一个不存在的图像URL,因为它引用了普通资产(“background.png”)而没有最后的哈希。这只是CSS中图像的一个问题;我的.erb文件中引用的所有图像都可以。那么如何在我的CSS中引用这个资产而不用硬编码摘要呢?有没有解决方法?
感谢阅读。
答案 0 :(得分:21)
使用asset-url
。 Rails将对此进行预处理并展开正确的URL。
body {
background-image: asset-url('background.png');
background-attachment: fixed;
background-position: 100% 100%;
background-repeat: no-repeat;
}