在Rails中的所有样式表文件中携带Sass变量

时间:2017-10-19 16:48:19

标签: ruby-on-rails ruby-on-rails-5 stylesheet

我有一个 site_settings.scss 文件,其中包含我的Rails应用的所有变量:

app/assets/stylesheets/site_settings.scss

$primary_color: #4285F4;
$dark_color: #333333; 
...

现在,如果我想在文件中使用这些变量,我需要在该文件中执行此操作:

import 'site_settings.scss'

我需要把它放在 EVERY FILE 的开头我想要使用这些变量,否则Rails会给我Undefined variable:错误。

我尝试将import 'site_settings.scss'放在 application.scss custom.scss 中,但它们都不起作用。

我还尝试在 aplication.scss 中使用require 'site_settings',并将application.scss重命名为 application.css.scss ,如下所述:{ {3}},但它仍无效。

这是我的application.scss:

/*
 *= require_self
 *= require font-awesome 
 */

@import "bootstrap-sprockets";
@import "bootstrap";
@import "custom";
@import "devise";
@import "site_settings";

那么,我该如何解决这个问题,这样我每次都不必在每个文件中写import 'site_settings.scss'

2 个答案:

答案 0 :(得分:1)

您应该重命名将使用共享变量的所有文件以_开头。 这将在部分文件的上下文中呈现其他文件,这将使用@import 'site_settings'中先前声明的变量。因此,您将拥有site_settings.scssquickrails/_general.scssquickrails/_media_query.scss等等。

这些导入被认为是局部的,这就是为什么名称应该以下划线开头,但是在导入时你不使用它。这是关于此的材料:

Why put in front of the file name "_" or "_" in scss/css?

答案 1 :(得分:0)

unique替换任何相关的d <- read.table(header = TRUE, text = "study.name ESL prof scope type ESL.1 prof.1 scope.1 type.1 Shin.Ellis 1 2 1 1 1 2 1 1 Shin.Ellis 1 2 1 1 1 2 1 1 Shin.Ellis 1 2 1 2 1 2 1 1 Shin.Ellis 1 2 1 2 1 2 1 1 Shin.Ellis 1 2 NA NA 1 2 NA NA Shin.Ellis 1 2 NA NA 1 2 NA NA Trus.Hsu 2 2 2 1 2 2 1 1 Trus.Hsu 2 2 NA NA 2 2 NA NA") is_constant <- function(x) length(unique(x)) == 1L keep_constants <- function(df, group_col) { data_cols <- colnames(df)[setdiff(1:ncol(df), group_col)] check_df <- aggregate(df, by = list(df[[group_col]]), FUN = is_constant) cols_to_keep <- sapply(check_df[, -1], all) unique(df[, cols_to_keep]) } keep_constants(d, 1) #> study.name ESL prof ESL.1 prof.1 #> 1 Shin.Ellis 1 2 1 2 #> 7 Trus.Hsu 2 2 2 2 并删除任何= require,即使您认为自己已将其注释掉。