【问题标题】:Sass with erb won't compile带有erb的Sass不会编译
【发布时间】:2012-12-26 23:06:26
【问题描述】:

在 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 的 gem 冲突,或者一个错误,或者什么。 毕竟,代码在没有 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

他们中的一些人最终通过改变方法解决了这个问题。 SASS 文件的 ERB 问题仍未解决。

【问题讨论】:

  • 你应该添加 .css ,你试过bundle exec rake assets:precompile吗?
  • 使用.sass.erb.css.sass.erb 结果是一样的。没试过预编译,开发环境有必要吗?
  • 不是。您使用的是什么版本的导轨?您提供的示例在 3.2.11 上对我来说很好......
  • Rails 3.2.9 在这里。我迷迷糊糊的,这么简单,就是想不通,哈哈。
  • this post 他们也遇到过类似的问题。不知道是版本问题还是 gem 问题。

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


【解决方案1】:

这确实是sass-rails 的问题,正如on GitHub 所讨论的那样。

于是this guy写了this patch,彻底解决了问题。

解决方案

添加到Gemfile:

gem "sass_rails_patch", "~> 0.0.1"

然后运行bundle,你就很好了!

【讨论】:

  • 我遇到的问题是,当从另一个文件导入时,它会在相应的 .sass.erb 文件 undefined 中生成所有变量。其他人有这个问题吗?
  • !似乎对我也不起作用(Rails 4.1.0 和 sass-rails 4.0.3)
【解决方案2】:

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

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

...而不是...

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

【讨论】:

    猜你喜欢
    • 2015-09-22
    • 2020-05-28
    • 2020-05-14
    • 2015-02-09
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 2020-04-14
    相关资源
    最近更新 更多