如何在 scss.erb 文件中的 '&' 之后 'interpolate' 以 ':' 开头的字符串变量

How to 'interpolate' string variable beginning with ':' after '&' in scss.erb file

在 scss.erb 文件中,我试图将一个变量添加到允许修改子样式上下文的混合中。虽然我使用的语法直接在 scss 中工作,但似乎 ruby 正在干扰,因为 &: 具有特定含义。例如,在 scss.erb 文件中:

@mixin test($pseudo: ":before") {
    color: #F00;

    &#{$pseudo} { content: 'x'; }
}

稍后,在正常的 scss 中:

.my-element {
    // after pseudo element
    @include test($pseudo: ":after");
}

.my-element {
    // self
    @include test($pseudo: "");
}

结果出错Invalid CSS after " &{$pseudo": expected ":", was "} { conte...

这里的实际上下文:https://github.com/bjnsn/compass-fontcustom/blob/master/lib/compass/fontcustom/templates/stylesheet.scss.erb)

想法?我假设我可以使用转义序列,但 Ruby 不是我的母语。

您可以像这样将其包装在 ERB 标签中:

...
<%= "&" %>#{$pseudo} { content: 'x'; }
...

有点乱,但这样它就被认为是一个字符串。