8

我正在使用波旁威士忌整洁的宝石来创建 Rails 应用程序的设计。我的 application.css.scss 包含以下内容:

 @import "bourbon";
 @import "neat";
 @import "main";

但是,如果我运行“rake assets:precompile”,则会发生此错误:

rake aborted!
Undefined mixin 'outer-container'.
(in /Users/anonymous/example/app/assets/stylesheets/admin/main.css.scss)
/Users/anonymous/example/app/assets/stylesheets/admin/main.css.scss:5:in  `outer-container'
/Users/anonymous/example/app/assets/stylesheets/admin/main.css.scss:5

文件 main.css.scss 包含以下内容:

footer#page_footer { 
 @include outer-container;
 nav{
  @include span-columns(6);
  @include shift(3);
  section#about_me_footer, section#contact_footer, section#miscellaneous_footer {
  @include span-columns(2 of 6);
 }
}
p {
 @include span-columns(6);
 @include shift(3);
}
}

有人可以给我一些建议吗?

4

5 回答 5

7

我遇到了同样的问题。我能够让它以两种不同的方式工作。

第一种方法可能不太理想,但您可以直接在 application.css.scss 文件中添加代码:

div.container {
  @include outer-container;
}

或者,您可以添加:

@import "bourbon";
@import "neat";

到 main.css.scss 文件的顶部。
这使您可以保持样式井井有条。

波旁威士忌网站链接到他们 wiki 中有关此问题的页面,但提到的解决方案对我不起作用:

https://github.com/thoughtbot/bourbon/wiki/Rails-Help-%5C-Undefined-mixin

于 2012-12-17T03:06:59.890 回答
4

我有同样的问题。我的解决方案是将部分文件从 重命名layout.css.scss_layout.css.scss. 任何使用 SASS 混合的文件都需要在加载这些混合后包含在内。在这种情况下,它试图layout.css单独预编译文件,尽管它不需要它所引用的混合的源。添加下划线使预编译器忽略该文件,直到另一个文件需要它。

于 2014-09-16T15:56:42.480 回答
1

根据更改日志,从 2.0.0 版开始,outer-containermixin 已被删除。您可以使用的最高版本outer-container是 1.8.0。通过 Bundler 添加 Neat 时,您将获得 2.0 或更高版本,除非您在 Gemfile 中指定版本。

执行此操作的新方法看起来要简单得多,但如果您有一堆不受支持的 scss,那就不太舒服了。

于 2017-03-19T21:00:24.510 回答
0

FWIW这是报告的问题https://github.com/thoughtbot/bourbon/issues/120,使用jacklin关于将导入语句直接添加到我的主css文件的评论解决了它。但是,我想解决这个问题,因为我真的不想继续将这些导入语句添加到我希望使用 mixins 的每个文件中

于 2013-02-11T20:35:07.517 回答
0

我曾经也有过一样的问题。

我有一个使用@include 外部容器的div,还有一个包含@include span-columns(8) 的div。第二个 div 错误地坐在第一个之外,产生误导性错误“Undefined mixin 'outer-container'”。将第二个 div 移入第一个(在外部容器内 - 在 CSS 和 HTML 中)纠正了问题。

对于上述问题,您必须通过确保 p 标签是页脚的子标签来做同样的事情。

于 2014-02-14T11:33:43.357 回答