Ruby Rails 资产管道似乎正在添加不存在的样式

Ruby on Rails asset pipeline appears to be adding styles that don't exist

我完全被这个难住了。我的 SCSS 文件显示:

.segmented-control {
  li .field_with_errors label {
      border-color: #db5757;
  }
}

但是当我加载页面并检查 css 时,它显示如下:

/* line 1382, /general.scss */
.segmented-control li .field_with_errors label,
.form-item-segmented-control li .field_with_errors label {
  border-color: #db5757;
}

行号 1382 正好指向我展示的第一个代码片段。然而在编译版本中,它包含一个额外的选择器,其中包括 .form-item-segmented-control.

我在 CSS 的其他地方确实使用了 .form-item-segmented-control,但这里没有。而且绝对不是嵌套或类似的东西。

我完全被难住了。关于 Rails 可能在做什么的任何想法?甚至关于如何进一步调试的想法?

好的,经过更多的调试,我相信我明白了。看起来这是由于我之前在文件中使用的 @extend。我以前没有意识到 @extend 的所有效果。

看起来如果我做这样的事情:

.form-item-segmented-control {
    @extend .segmented-control;
}

ever 在文件中,然后它将 .form-item-segmented-control 选择器添加到 all 出现的 .segmented-control .但是,需要注意的一个重要细微差别是,它不会对其他 SCSS 部分中出现的 .segmented-control 执行相同的操作; @extend 仅影响使用它的文件。