SCSS文件中的Rails 3.1资产URL似乎没有正确引用资产
我刚刚从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();
它工作正常,因为它生成/assets/foo.png
。
那么,问题是为什么我的scss
预编译器没有生成正确的css
?
更新 :我的foo.css.scss
文件驻留:
app/assets/stylesheets/sub_dir/foo.css.scss
这有什么不同吗?
你可以尝试:
.foo { background: url("/assets/foo.png") }
应该工作正常。 希望能帮助到你 :)
尝试
.classname{ background: url(asset_path('/assets/image.png')) }
我尝试了各种解决方案。 最优雅的是以下内容:
.foo { background-image: url('foo.png') }
它由SCSS编译器自动转换为url('/assets/foo.png')
。
.foo { background-image: asset-url('sub_dir/foo.png', asset); }