Sass Rails不支持地图语法(对象变量)

时间:2017-11-08 10:23:29

标签: css ruby-on-rails ruby sass

尝试使用Sass Maps(看起来像对象变量)时出现以下错误:

Invalid CSS after "  primary": expected ")", was ": #3097D1,"
  (in /Users/.../app/assets/stylesheets/new_design.scss:19)

我使用以下最小例子重现了错误:

$theme-colors: (
  primary: #3097D1,
  secondary: black
);

@each $key, $val in $theme-colors {
  .foo.#{$key} {
    color: $val;
  }
}

预期:

.foo.primary {
  color: #3097D1;
}

.foo.secondary {
  color: black;
}

但是提到了错误。

sass-rails, ~> 5.0.0似乎是根据Gemfile

安装的
gem 'sass-rails',   '~> 5.0.0' 

我假设加载了一个应该支持对象变量的最新sass版本。

我觉得我当前的版本没有认识到这种语法。

如何确保我拥有合适的sass版本?还有什么我需要做的才能成功编译这个语法吗?

bundle show sass-rails显示5.0.6,这似乎是最近的。

1 个答案:

答案 0 :(得分:1)

正如评论中所讨论的那样,对map sass语法的类似问题进行了stackoverflow讨论

讨论涉及Github Issue 1088

我引用

  

缩进语法存在许多问题,Sass维护者不会修复它们。 :(他们说,.sass解析器很奇怪,难以重构。

     

我发现Sass语法更快,更容易阅读。它被剥夺了视觉噪音:

     

indented_vs_bracketed

     

复制粘贴也更容易。

     

所以Sass维护者,请不要让缩进语法落后!

可能通过深入讨论我们将能够找到解决方案。现在我引用帖子Ionică Bizău的所有者的解决方案:

  

将值包装在引号之间,在浏览器中保存,重新加载而没有任何错误,然后删除引号并在浏览器中重新加载页面解决了问题。也许这是在某处缓存的东西......但我无法理解在哪里。我没有重启rake或运行任何捆绑命令......谢谢! :)