SCSS文件中的Rails 3.1资产URL似乎没有正确引用资产

时间:2014-09-03 07:48:17

标签: ruby-on-rails ruby-on-rails-3.1 sass asset-pipeline

我刚刚从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

这有什么不同吗?

4 个答案:

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