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); }