我不明白为什么我的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/

10-12 00:36
查看更多