我在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
,那么它可以正常工作。但我不应该这样做,所以我做错了或者我的设置有一些配置错误。
我需要做些什么来解决这个问题?
宝石:
系统:
(Bootstrap Social是一组基于Bootstrap和Font Awesome的纯CSS制作的社交登录按钮。)
答案 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
。