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

Ryz*_*off 5 ruby-on-rails stylesheet ruby-on-rails-5

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

app/assets/stylesheets/site_settings.scss

$primary_color: #4285F4;
$dark_color: #333333; 
...
Run Code Online (Sandbox Code Playgroud)

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

import 'site_settings.scss'
Run Code Online (Sandbox Code Playgroud)

我需要将其放在我想要使用这些变量的每个文件的开头,否则 Rails 会给我Undefined variable:错误。

我尝试import 'site_settings.scss'放入application.scsscustom.scss但它们都不起作用。

我还尝试require 'site_settings'aplication.scss中使用并将 application.scss 重命名为application.css.scss,如下所述: http: //mildlyinternet.com/code/scss-variables-asset-pipeline.html,但它仍然不工作。

这是我的 application.scss:

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

@import "bootstrap-sprockets";
@import "bootstrap";
@import "custom";
@import "devise";
@import "site_settings";
Run Code Online (Sandbox Code Playgroud)

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

Erv*_*ouS 4

您应该重命名所有将使用共享变量以_. 这将在部分文件的上下文中渲染其他文件,这些文件将使用先前在@import 'site_settings'. 所以你会有site_settings.scssquickrails/_general.scssquickrails/_media_query.scss等等。

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

为什么scss/css中文件名前面要加“_”或“_”?