我对资产管道的工作方式感到困惑,我使用的是一种名为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
并且那个DOESNT存在,所以我收到404错误,看不到图片。
编写如下:
删除路径前的dots(..)
。
button.aloha-button {
background: url("/img/base.png") no-repeat scroll 0 0 transparent !important;
}
如果仍然无法使用,请告诉我。
为了访问生产中的图像资产,资产预编译将在每个文件名的末尾添加一个哈希,如果您的CSS扩展名为.scss或.sass,则需要使用sass-rails提供的img-url
帮助程序,或者,如果您将.erb添加到样式表文件名的末尾,则可以使用asset_path
帮助器:
button.aloha-button {
background: image-url("/img/base.png") no-repeat scroll 0 0 transparent !important;
}
好像aloha-rails gem没有做到这一点。 可能还需要将..
放在路径的前面。