使用erb的Sass无法编译

时间:2013-01-12 13:42:28

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

在Rails中,文件file.css.sass.erb

.class-name
    width: <%= "10px" %>

抛出错误:

Invalid CSS after "": expected expression (e.g. 1px, bold), was "<%= "10px" %>"

这不应该有效吗?

更新1

仍然在努力,但我发现如果我将其更改为SCSS语法(文件名和代码),仍然会导致非常类似的错误。

Invalid CSS after " width: ": expected expression (e.g. 1px, bold), was "<%= "10px" %>;"

虽然,如果我 删除 scss扩展名,保留CSS类似语法的文件名file.css.erb,Rails会按预期编译。

然而,考虑到我忘记了一些非常明显的事情,我也在考虑这可能是与sass-rails的宝石冲突,或者是一个错误,或者某种东西。 毕竟,代码在没有SASS扩展的情况下正常工作。

更新2

刚刚在同一问题上找到了其他4个未解答的问题:

  1. scss.erb ruby code not executing
  2. Assets not being run though the .erb preprocessor
  3. Rails erb preprocessing not happening in development mode
  4. sprockets sass partial erb extension
  5. 他们中的一些人最终通过改变方法解决了这个问题。关于SASS文件的ERB问题仍然没有改变。

2 个答案:

答案 0 :(得分:13)

sass-rails确实存在问题,正如on GitHub所述。

所以this guy写了this patch,这完全解决了这个问题。

解决方案

添加到Gemfile

gem "sass_rails_patch", "~> 0.0.1"

然后运行bundle,你很好!

答案 1 :(得分:8)

如果erb仅用于引用资产,则可以使用asset helpers

background-image: asset-url("rails.png")

......而不是......

background-image: url("<%= image_path('rails.png') %>");