Rails预编译资产SCSS与LTR& RTL

时间:2015-04-10 13:24:13

标签: ruby-on-rails ruby-on-rails-4 sass asset-pipeline

这个并不容易!

我正在构建一个在两个区域设置之间切换的页面AR& EN(RTL和LTR) 页面是使用SCSS bootstrap v3构建的。

将此作为一个有趣的事实: http://sass-lang.com/documentation/file.FAQ.html#q-ruby-code

我已经在左侧和右侧之间切换了所有Boostrap文件。基于单个SCSS标志(即$ flag-direction)

我现在主要担心的是如何处理生产环境中的资产管道?在RTL和EXL之间切换时似乎工作正常LTR标志。 但在生产中它只在版本上创建,然后开始提供该版本。有没有人解决这个问题?

我总是找到这样的解决方案:http://dolinked.com/questions/229493/maintain-rtl-version-of-stylesheets-with-rails-asset-pipeline 这有点可怕,因为它太多的工作了。还有什么更简单的吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

据我所知,您希望将所有代码编译成单个CSS文件?除非您自己更改Bootstrap代码,否则我希望您将加载许多未使用的CSS代码。如果您能够有条件地设置HTML的文本目录,您还应该能够动态加载CSS文件并为每个文本方向编译CSS文件。

否则您可以使用Sass的nested @import功能:

使用grid.scss:

@at-root body#{&} {
direction: $direction;
}
.row {
float: $float;
}

以下代码:

.rtl {
$direction: rtl;
$float: left;
@import "grid.scss";
}


.ltr {
$direction: ltr;
$float: right;
@import "grid.scss";
}

编译成CSS代码如下:

body.rtl {
  direction: rtl; }
.rtl .row {
  float: left; }

body.ltr {
  direction: ltr; }
.ltr .row {
  float: right; }