如何使Bootstrap sass变量对另一个导入的sass文件可见?

时间:2014-07-16 12:20:19

标签: ruby-on-rails twitter-bootstrap sass bootstrap-sass

我在Rails应用程序中使用bootstrap-sass。到目前为止,一切都运行良好,但我刚刚尝试导入另一个使用bootstrap变量的第三方sass文件,它无法看到它们。

在我的application.css.scss

*= require bootstrap_local

bootstrap_local.css.scss

@import "bootstrap";
@import "bootstrap-social";

当我进行页面访问时,我收到Rails错误

Undefined variable: "$line-height-computed".
(in .../app/assets/stylesheets/bootstrap-social.scss:11)

bootstrap-social.scss所需的变量是在先前导入的bootstrap文件中定义的(实际上它在其包含的部分bootstrap/variables中定义)。

据我了解,这应该有效,因为bootstrap_local 必需,这意味着其中的所有内容都在一个范围内编译,所以导入的所有内容 bootstrap_local被视为一个大文件。也许我有这个错误?

如果我将@import "bootstrap";投入bootstrap-social.scs,那么它可以正常工作。但我不应该这样做,所以我做错了或者我的设置有一些配置错误。

我需要做些什么来解决这个问题?

宝石:

  • 自举-SASS-3.1.1.1
  • SASS护栏-4.0.3

系统:

  • Rails 4.0.1
  • ruby​​ 2.0.0p247(2013-06-27修订版41674)[x86_64-linux]

Bootstrap Social是一组基于Bootstrap和Font Awesome的纯CSS制作的社交登录按钮。)

1 个答案:

答案 0 :(得分:0)

问题中描述的问题可以通过将application.css.scss清单更改为使用import代替require来解决:

@import "bootstrap_local";

还需要从清单中删除任何require_tree .,否则它将要求相同的bootstrap_local文件,因为它位于其路径中。

在反思中,清单中没有require tree .可能是明智的,因为它可以防止包含不需要的文件。我只在那里拥有它,因为它默认存在于一个新的Rails项目中(同样适用于require_self;它更清晰,不把它放在清单中)。

在参考有关使用下划线为文件添加前缀的建议时,当您不需要文件时, 是一件好事,例如问题中的bootstrap-social ,被编译成一个单独的CSS文件。所以,我最终将其重命名为_bootstrap-social.scss