我不明白为什么我的css文件没有使用辅助方法image_url
将摘要附加到我的 Assets 中
我的 Assets 已正确预编译,并且文件中确实包含摘要。我也可以手动访问它们(使用摘要的URL)。最奇怪的是,在一开始它就起作用了。
这是我的配置:
config.assets.js_compressor = :uglifier
config.assets.compile = false
config.assets.digest = true
config.assets.version = '1.0'
config.serve_static_assets = false #also tried true
这是我的application.css:
* = require_tree。
这是common.scss文件,用于包含图像:
body{
background: image_url('bg.jpg');
font-family: 'Lato', sans-serif;
overflow-x: hidden;
}
图像以及样式表位于 Assets /图像和 Assets /样式表内的子文件夹中。
这是我的 gem :
gem 'rails', '4.0.0'
gem 'sass-rails', '~> 4.0.0'
我正在使用capistrano进行部署,但是我不认为这是与capistrano相关的问题, Assets 编写得很好。
编辑
到现在为止,我一直尝试(失败)的是:
image-url('image.jpg'); -> http://www.mydomain.it/images/image.jpg
image_url('image.jpg'); -> same as above
url(image-path('header.jpg')); -> http://www.mydomain.it/images/image.jpg
asset-url('image.jpg', image); -> http://www.mydomain.it/image.jpg
问题仍然存在: Assets 已编译但没有摘要就可以请求。
编辑
跟随Rails 4 image-path, image-url and asset-url no longer work in SCSS files这个问题,我移动了我的 Assets ,并结合使用
asset-url并将我的 Assets 放在/public文件夹中,即使应用程序未使用带时间戳的图像版本,问题仍然存在,但背景图像仍在工作。
因此,只有一个(不是那么好,也不是那么坏)的解决方法。
最佳答案
应该使用asset_path
。另外,由于SCSS不会编译asset_path,因此它需要在ERB标签下运行。将common.scss
重命名为common.scss.erb
.body { background-image: url(<%= asset_path 'bg.jpg' %>) }
阅读更多here。
关于ruby-on-rails - Rails4 : image_url not generating digest in scss,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21650699/