我对如何使用资源管道感到困惑,我正在使用名为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错误并且没有看到图像。
答案 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宝石不会这样做。可能还需要将..
放在路径前面。