【问题标题】:Rails 3.2 _partial.scss.erb variable scoping: full compilation before @import?Rails 3.2 _partial.scss.erb 变量范围:@import 之前的完整编译?
【发布时间】:2013-11-26 19:00:10
【问题描述】:

比我聪明的头脑:

我们有几个 SCSS 部分,它们定义了 mixin、变量和其他有用的东西。我们现在需要在这些部分之一中使用一些嵌入的 ruby​​,如下所示:

_partial.scss.erb

 $text-color: #555555;
 <%= "" %>

app.scss

@import "partial"
.text {color: $text-color;}

如果文件名为_partial.scss,它可以正常工作(当然,没有任何红宝石)。当命名为 .erb 时,我收到一个错误,指出变量 $text-color 未定义。

我正在使用sass_rails_patch gem。我不能肯定地说,但我相信 _partial.scss.erb 会一直编译到 _partial.css 中,然后会被导入到 app.scss 中。这可能是$text-color 被剥离的原因。

关于如何让这个流程按我期望的方式工作有什么建议吗?我希望:

  1. 评估 .erb 文件中的 ruby​​,生成有效的 .scss
  2. .scss 上运行@import 语句
  3. 执行所有其他 SCSS 编译工作,生成 .css

【问题讨论】:

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


【解决方案1】:

您很可能希望在 SCSS 文件中使用 Ruby 脚本来构建资产路径(这必须是唯一的原因)。如果是这个原因,您可以使用 SCSS 函数来构建它们:

代替:

background-image: url(<%= asset_path('general/side_shadow.png') %>);

改用这个 CSS/SCSS 函数:

background-image: url(asset-path("general/side_shadow.png", image));

这是 SCSS 助手的文档:http://rubydoc.info/github/petebrowne/sprockets-sass/master/Sprockets/Sass/Functions

希望对你有帮助

【讨论】:

  • 实际上,这不是唯一的原因,不。我们正在寻求做一些非常精细的动态 CSS 类定义,这样我们就可以尽可能 DRY……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
  • 1970-01-01
  • 1970-01-01
  • 2014-04-18
相关资源
最近更新 更多