如何在Rails 4.0中引用生产中的CSS背景图像?

时间:2013-05-12 21:09:56

标签: ruby-on-rails-3

我将应用程序从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中引用这个资产而不用硬编码摘要呢?有没有解决方法?

感谢阅读。

1 个答案:

答案 0 :(得分:21)

使用asset-url。 Rails将对此进行预处理并展开正确的URL。

body {
  background-image: asset-url('background.png');
  background-attachment: fixed;
  background-position: 100% 100%;
  background-repeat: no-repeat;
}