如何在Rails应用程序中导入SCSS mixins?

时间:2014-09-10 22:44:01

标签: ruby-on-rails sass

试图找出如何在Rails 4应用程序中导入一些SCSS文件。文件是:

@import "shared/mixins",
        "shared/reset",
        "shared/about-light";

我不确定如何正确地做到这一点,我也不知道如何设置路径。

我将这些文件放在名为"shared"的文件夹中,并将此文件夹放在/lib/assets/css/内。这是正确的方法吗?

还尝试将文件放在/vendor/assets/stylesheets/

如何正确导入这些文件?

错误:

File to import not found or unreadable: mixins.
Load paths:

3 个答案:

答案 0 :(得分:5)

我们通常将mixins放在名为_mixins.scss的部分文件中,直接放在app/assets/stylesheets/目录中,如果您想要更多组织,可能在shared之类的子目录下。在你的application.css中,你可以做(​​就像你做的那样)

@import 'shared/mixins';
@import 'shared/colors';

或其他什么。如果您真的希望他们坐在其他地方,您应该查看SASS的load_paths配置设置。您可以告诉SASS在导入文件时要查看的位置,默认情况下可能不包括lib/assetsvendor/assets

要添加此配置,请在environment.rb或其他配置文件中执行类似

的操作
config.sass.load_paths << File.expand_path('../../vendor/assets/stylesheets/')

除了默认搜索的所有其他目录外,还会使vendor/assets/stylesheets中的SASS看起来。

答案 1 :(得分:2)

我认为你混淆了部分和混音。

来自Sass文档:

<强>密新

&#34; mixin允许您创建要在整个站点中重用的CSS声明组。您甚至可以传入值以使您的mixin更灵活。你可以把mixin想象成css的一个函数(太棒了吧!)。#34;有关mixins here的更多信息。

<强>部分

&#34;您可以创建包含很少CSS片段的部分Sass文件,您可以将这些片段包含在其他Sass文件中。这是模块化CSS并帮助维护事物更容易的好方法。 partial只是一个以前导下划线命名的Sass文件。&#34;有关partials here的更多信息。

因此,您尝试导入的内容确实是 partials ,并且应以下划线开头。

您的目录结构应如下所示:

assets
  stylesheets
    application.css.scss
    shared
      _mixins.scss
      _reset.scss
      _about-light.scss

您的application.css.scss文件应如下所示:

@import "mixins";
@import "rest";
@import "about-light";

答案 2 :(得分:0)

好的,所以我能够按照以下方式解决这个问题:

  1. application.rb中添加以下内容:

    config.sass.load_paths << File.expand_path('../../vendor/assets/stylesheets/')

  2. 在CSS文件中导入为:

    @import "mixins", "reset", "about-light";

  3. 将文件放入:

    /vendor/assets/stylesheets/

  4. 重启服务器。