在 Rails 中的所有样式表文件中携带 Sass 个变量
Carry Sass variables across all stylesheet files in Rails
我有一个 site_settings.scss 文件,其中包含我的 Rails 应用程序的所有变量:
app/assets/stylesheets/site_settings.scss
$primary_color: #4285F4;
$dark_color: #333333;
...
现在,如果我想在文件中使用这些变量,我需要在该文件中执行此操作:
import 'site_settings.scss'
我需要把它放在我想使用这些变量的每个文件的开头,否则Rails会给我Undefined variable:
错误.
我试过将 import 'site_settings.scss'
放在 application.scss 或 custom.scss 中,但两者都没有他们正在工作。
我也试过在aplication.scss中使用require 'site_settings'
并将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";
那么,我该如何解决这个问题,这样我就不必每次都在每个文件中都写 import 'site_settings.scss'
?
您应该重命名所有将使用共享变量的文件以 _
开头。
这将在部分文件的上下文中呈现其他文件,这将使用先前在 @import 'site_settings'
中声明的变量。所以你会有 site_settings.scss
和 quickrails/_general.scss
, quickrails/_media_query.scss
等等。
这些导入被认为是局部的,这就是为什么名称应该以下划线开头,但在导入时你可以不用它。这是关于这个的material:
将任何相关的 = require
替换为 @import
并删除任何 = require
,即使您认为您已将其注释掉也是如此。
我有一个 site_settings.scss 文件,其中包含我的 Rails 应用程序的所有变量:
app/assets/stylesheets/site_settings.scss
$primary_color: #4285F4;
$dark_color: #333333;
...
现在,如果我想在文件中使用这些变量,我需要在该文件中执行此操作:
import 'site_settings.scss'
我需要把它放在我想使用这些变量的每个文件的开头,否则Rails会给我Undefined variable:
错误.
我试过将 import 'site_settings.scss'
放在 application.scss 或 custom.scss 中,但两者都没有他们正在工作。
我也试过在aplication.scss中使用require 'site_settings'
并将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";
那么,我该如何解决这个问题,这样我就不必每次都在每个文件中都写 import 'site_settings.scss'
?
您应该重命名所有将使用共享变量的文件以 _
开头。
这将在部分文件的上下文中呈现其他文件,这将使用先前在 @import 'site_settings'
中声明的变量。所以你会有 site_settings.scss
和 quickrails/_general.scss
, quickrails/_media_query.scss
等等。
这些导入被认为是局部的,这就是为什么名称应该以下划线开头,但在导入时你可以不用它。这是关于这个的material:
将任何相关的 = require
替换为 @import
并删除任何 = require
,即使您认为您已将其注释掉也是如此。