使用erb的Sass无法编译

Alv*_*nço 9 ruby ruby-on-rails erb sass asset-pipeline

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

.class-name
    width: <%= "10px" %>
Run Code Online (Sandbox Code Playgroud)

抛出错误:

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

它不应该工作吗?

更新1

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

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

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

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

更新2

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

  1. scss.erb ruby​​代码没有执行
  2. 资产没有通过.erb预处理器运行
  3. Rails erb预处理不在开发模式下进行
  4. 链轮sass部分erb扩展.

其中一些人最终通过改变方法解决了这个问题.SASS文件的ERB问题仍然没有改变.

Alv*_*nço 13

这确实是一个问题sass-rails,正如在GitHub上讨论的那样.

所以这个人写了这个补丁,完全解决了这个问题.

解决方案

添加到Gemfile:

gem "sass_rails_patch", "~> 0.0.1"
Run Code Online (Sandbox Code Playgroud)

然后跑bundle,你很好!

  • 我遇到的问题是,当从另一个文件导入时,它会使相应的.sass.erb文件中的所有变量"未定义".还有谁有相同的问题吗? (3认同)
  • 你应该接受你的答案. (2认同)
  • !似乎对我不起作用(Rails 4.1.0和sass-rails 4.0.3) (2认同)

Joã*_*uza 9

如果erb仅用于引用资产,则可以使用资产助手:

background-image: asset-url("rails.png")
Run Code Online (Sandbox Code Playgroud)

...代替...

background-image: url("<%= image_path('rails.png') %>");
Run Code Online (Sandbox Code Playgroud)