Rails css 中 background-image 使用 asset_path,部署的时候为什么没有自动加上 md5 哈希呢?

匿名 · 2014年05月17日 · 最后由 fanzc 回复于 2014年05月18日 · 4501 次阅读

site.css.erb

.cover {
    background-image: url(<%= asset_path "banner.jpg" %>)
}

执行 rake asset:precompile 后使用 passenger 部署, 生成 public/assets/banner-88049a1aa6e5ad548f0d9b979f30e220.jpg

但是生成的 css 文件为

.cover {
    background-image: url("/assets/banner.jpg")
}

求帮助!!

...没用过 .css.erb 的做法

你试试用 scss 有没有问题……

background-image: asset-url("/assets/banner.jpg")

http://ruby-china.org/topics/16678 这里有个重复的帖子:

2.3.2 CSS and Sass When using the asset pipeline, paths to assets must be re-written and sass-rails provides -url > and -path helpers (hyphenated in Sass, underscored in Ruby) for the following asset classes: image, font, video, audio, JavaScript and stylesheet.

image-url("rails.png") becomes url(/assets/rails.png) image-path("rails.png") becomes "/assets/rails.png"

原文来自http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets

你只要将你的代码改为:

/* xxx.css.scss */
.content {
  background: image-url('index_backgroud.png') no-repeat ;
}

即可。

最后部署到 production 应该就会是类似这样的了:

background: url(/assets/index_backgroud2-02c1183cb28a4fdfed9cae10442f0a93.png);
匿名 #4 2014年05月18日

@Kabie @huacnlee @Martin91 诚谢各位好汉! 按照你们的指示完美搞定!!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号