10

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

谢谢阅读。

4

1 回答 1

22

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

body {
  background-image: asset-url('background.png');
  background-attachment: fixed;
  background-position: 100% 100%;
  background-repeat: no-repeat;
}
于 2013-05-12T21:12:20.223 回答