带有相对路径arent加载的Rails资产管道图像

问题描述 投票:1回答:2

我对资产管道的工作方式感到困惑,我使用的是一种名为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错误,看不到图片。

ruby-on-rails asset-pipeline
2个回答
0
投票

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

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


如果仍然无法使用,请告诉我。


0
投票

为了访问生产中的图像资产,资产预编译将在每个文件名的末尾添加一个哈希,如果您的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没有做到这一点。 可能还需要将..放在路径的前面。

© www.soinside.com 2019 - 2024. All rights reserved.