Rails资产管道图像与相对路径不加载

时间:2012-12-15 04:52:01

标签: ruby-on-rails asset-pipeline

我对如何使用资源管道感到困惑,我正在使用名为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错误并且没有看到图像。

2 个答案:

答案 0 :(得分:0)

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

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


如果不能正常工作,请告诉我。

答案 1 :(得分:0)

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

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

似乎aloha-rails宝石不会这样做。可能还需要将..放在路径前面。

相关问题