我在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
那么它运行正常 . 但我不应该这样做,所以我做错了或者我的设置有一些错误配置 .
What do I need to do to fix this?
宝石:
-
bootstrap-sass-3.1.1.1
-
sass-rails-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 回答
可以通过将
application.css.scss
清单更改为使用import
而不是require
来解决问题中描述的问题:还需要从清单中删除任何
require_tree .
,因为否则它将需要相同的bootstrap_local
文件,因为它位于其路径中 .经过反思,清单中没有
require tree .
可能是明智的,因为它可以防止包含不需要的文件 . 我只有它在那里,因为它默认存在于一个新的Rails项目中(同样适用于require_self
;更清楚的是不将它放在清单中) .在参考有关使用下划线为文件添加前缀的建议时,当您不需要文件(如问题中的
bootstrap-social
)编译成单独的CSS文件时,这是一件好事 . 所以,我最终将其重命名为_bootstrap-social.scss
.