Ruby on rails 3 如何使我的较少变量可用于Rails中的所有CSS文件? 我所拥有的:
在Rails 3.2.2中,我有以下样式表: app/assets/stylesheets | |-- application.css |-- bootstrap_and_overrides.css.less | |-- annotations.css.less |-- maps.css.less.erb `-- users.css.less.erb 当然,bootstrap和overrides.css.less包括Twitter bootstrap以及一些其他自定义less变量Ruby on rails 3 如何使我的较少变量可用于Rails中的所有CSS文件? 我所拥有的:,ruby-on-rails-3,twitter-bootstrap,asset-pipeline,less,Ruby On Rails 3,Twitter Bootstrap,Asset Pipeline,Less,在Rails 3.2.2中,我有以下样式表: app/assets/stylesheets | |-- application.css |-- bootstrap_and_overrides.css.less | |-- annotations.css.less |-- maps.css.less.erb `-- users.css.less.erb 当然,bootstrap和overrides.css.less包括Twitter boot
@import "twitter/bootstrap/bootstrap";
@import "twitter/bootstrap/responsive";
// other stuff
@brown_text: #332820;
什么不起作用: 现在,在
annotations.css.less
中,我想使用@brown_text
,但它给了我:
variable@brown\u文本未定义
我想这是因为annotations.css.less
中没有对定义变量的“master”文件的引用。而且似乎annotations.css.less
是首先编译的——请注意,我目前正在开发环境中
那么,如何使用自定义的LESS变量,并使它们在其他样式表文件中可用呢?我目前的“修复”是将所有自定义样式移动到bootstrap\u和\u overrides.css.less.erb
,这看起来一点也不干净
什么也不起作用:
只导入
import
ing较少的文件是不可能的,因为它们使用Rails的资产路径助手。导入ERB文件也是不可能的,因为@import
语句找不到该文件,因为它需要.less
后缀。twitter引导rails编译东西的方式,您需要将其他less样式表导入到覆盖文件中。因此,对于另一个文件,annotations.less
:
@import "twitter/bootstrap/bootstrap";
@import "twitter/bootstrap/responsive";
//other LESS styles
@import "annotations"
更多信息,请查看此gem下面使用的less-rails。您不需要将ERB用于资产路径帮助器–它们实际上被烘焙到less-rails gem中,您可以在此处参考: 您应该能够在使用ERB引用资产管道的任何位置使用资产路径或资产url 鉴于此,最好的方法是:
application.css
转换为application.css.less
@import
目录中的每个文件annotations.css.less
在bootstrap\u和\u overrides
之后导入-这就是为什么使用require\u树通常不是一个好主意。
,因为您无法控制加载文件的顺序。按照现在的方式,annotations.css.less将在引导_和_覆盖之前加载–甚至在您想要使用的变量存在之前希望有帮助 我已经在使用
less rails
gem了,但是导入maps.css.less.erb
怎么样?我如何在那里获得正确的资产路径?我使用erb
,因为我需要一些图像资源的路径,等等。它应该仍然有效。链轮从右到左处理文件,因此首先计算ERB,然后计算LESS,然后计算CSS.Oh,您需要将文件命名为*.LESS而不是*.CSS.LESS。抱歉。好的,对于一个简单的例子,这是可行的,但是我不能再导入less.erb
文件了@import“foo”
会说它找不到foo.less
,因为它实际上是foo.less.erb
。导入foo.less.erb
将尝试导入foo.less.erb.less
…这似乎是一种非此即彼的情况。链轮一次只能运行一个文件,因此变量不能跨流,使用较少的导入也不会触发链轮。请澄清-什么是“链轮指令”?链轮指令是Rails(Rails依赖的真正的gem,称为链轮)用来加载JS/CSS文件以编译成一个文件的。因此,在上面的代码示例中,指令是:*=require\u self
和*=require\u tree。
对于CSS,指令以*=
开头;对于JS,指令以/=
开头。使用LESS@import命令,您不再需要这些指令,因为您将使用LESS命令包含样式表。使用LESS的好处是,您仍然可以访问您的变量;使用这些指令,你不需要。这很有道理。关于资产管道和所有这些东西,还有很多需要了解的。我明天会设法修好的。同时谢谢你!
@import "twitter/bootstrap/bootstrap";
@import "twitter/bootstrap/responsive";
//other LESS styles
@import "annotations"