我刚刚从Rails 3.0升级到Rails 3.1。
我有一个foo.css.scss
文件引用图像(/app/assets/images/foo.png
),如下所示:
.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
这有什么不同吗?
答案 0 :(得分:2)
您可以尝试:
.foo {
background: url("/assets/foo.png")
}
应该可以正常工作。希望它有所帮助:)
答案 1 :(得分:0)
尝试
.classname{
background: url(asset_path('/assets/image.png'))
}
答案 2 :(得分:0)
我尝试了各种解决方案。最优雅的是以下内容:
.foo {
background-image: url('foo.png')
}
由SCSS编译器自动转换为url('/assets/foo.png')
。
答案 3 :(得分:0)
.foo {
background-image: asset-url('sub_dir/foo.png', asset);
}