所以,我有一个 app/assets/stylesheets/
目录结构,看起来像这样:
|-dialogs
|-mixins
|---buttons
|---gradients
|---vendor_support
|---widgets
|-pages
|-structure
|-ui_elements
在每个目录中,有多个 sass 部分(通常是 * . css.scss,但有一个或两个 * . css.scss.erb)。
我可能假设了很多,但是因为 application.css 中的 *= require_tree .
,Rails 应该自动编译这些目录中的所有文件,对吗?
最近,我尝试重新构造这些文件,删除所有颜色变量,并将它们放在根 app/assets/stylesheets
文件夹(_ colors. css.scss)中的一个文件中。然后,我在根 app/assets/stylesheets
文件夹中创建了一个名为 master. css.scss 的文件,如下所示:
// Color Palette
@import "colors";
// Mixins
@import "mixins/buttons/standard_button";
@import "mixins/gradients/table_header_fade";
@import "mixins/vendor_support/rounded_corners";
@import "mixins/vendor_support/rounded_corners_top";
@import "mixins/vendor_support/box_shadow";
@import "mixins/vendor_support/opacity";
我并不真正理解 Rail 如何处理资产编译的顺序,但它显然对我不利。似乎没有一个文件意识到它们导入了任何变量或混合,所以它抛出了错误,我无法编译。
Undefined variable: "$dialog_divider_color".
(in /home/blah/app/assets/stylesheets/dialogs/dialog.css.scss.erb)
Undefined mixin 'rounded_corners'.
(in /home/blah/app/assets/stylesheets/widgets.css.scss)
变量 $dialog_divider_color
在 _ color. css.scss 中明确定义,_master.css.scss
导入颜色和所有混合。但很显然 Rails 没有收到那份备忘录。
有没有什么方法可以修复这些错误,或者我需要将所有的变量定义放回到每个单独的文件,以及所有的混合导入?
不幸的是,这家伙似乎认为这是不可能的,但我希望他是错的。任何想法都非常感谢。