【发布时间】:2014-10-27 15:20:52
【问题描述】:
我刚刚从 Rails 3.0 升级到 Rails 3.1。
我有一个引用图像 (/app/assets/images/foo.png) 的 foo.css.scss 文件,如下所示:
.foo {
background-image: image-url('foo.png');
}
问题是我的foo.png 文件未加载,我在日志中看到 404 错误。
实际生成的css条目是:
background-image: url(/images/foo.png);
这是错误的 (?),因为图片可以在 /assets/foo.png 而不是 /images/foo.png 找到。
请注意,我仍在使用development 模式。
另一个重要说明。如果我将我的 foo.css.scss 文件重命名为 foo.css.erb 并使用:
background-image: url(<%= image_path('foo.png') %>);
它工作正常,因为它生成/assets/foo.png。
那么,问题是为什么我的scss 预编译器没有生成正确的css?
更新:我的foo.css.scss 文件位于:
app/assets/stylesheets/sub_dir/foo.css.scss
这有什么不同吗?
【问题讨论】:
-
出现了更严重的问题,但一个简单的解决方法是将 image-url 更改为 assets-url
-
@Yule 我按照你的建议使用了
asset-url('foo.png', image),但我有同样的错误。生成的网址是/images/foo.png -
你使用的是什么版本的 sass-rails?你有
config.assets.enabled = trueconfig.assets.version = '1.0'在application.rb中吗 -
@Yule sass-rails version: 3.1.0 .. 'yes' 对于版本和启用标志
-
如果找不到 foo.png,你应该只获取 /images/foo.png。会不会是一些愚蠢的事情,比如你的 css 和文件路径之间的大写/小写不匹配?
标签: ruby-on-rails ruby-on-rails-3.1 sass asset-pipeline