1

我对资产管道的工作方式感到困惑,我使用了一个名为 aloha-rails 的 gem,它有下一个 CSS 规则:

button.aloha-button {
    background: url("../img/base.png") no-repeat scroll 0 0 transparent !important;
}

如果我在本地运行它,则该规则已存档:

http://local.dev/assets/aloha/css/aloha.css?body=1

我可以看到图像,它是从这个地址加载的:

http://local.dev/assets/aloha/img/base.png

但是当我在heroku上运行它时,当我在本地预编译资产时,css规则是从applications.css加载的,该规则仍然带有../img/base.png,因此图像试图从以下位置加载:

http://server.herokuapp.com/img/base.png

并且不存在,所以我收到 404 错误并且看不到图像。

4

2 回答 2

0

编写如下:
删除dots(..)路径之前的。

button.aloha-button {
 background: url("/img/base.png") no-repeat scroll 0 0 transparent !important;
}


如果仍然不工作,请告诉我。

于 2012-12-15T04:55:38.067 回答
0

为了在生产中访问您的图像资产,资产预编译将在每个文件名的末尾添加一个哈希,img-url如果您的 css 具有 .scss 或 .sass 扩展名,您需要使用 sass-rails 提供的帮助程序,或者您可以asset_path如果将 .erb 添加到样式表文件名的末尾,请使用帮助程序:

button.aloha-button {
    background: image-url("/img/base.png") no-repeat scroll 0 0 transparent !important;
}

似乎 aloha-rails gem 没有这样做。大概还需要把..前面的路径丢掉。

于 2012-12-16T06:26:58.623 回答