@import在子文件夹中的SASS文件中不起作用

时间:2012-11-27 10:51:31

标签: ruby-on-rails-3 gem sass

设置阶段

我有以下样式表结构:

/stylesheets   
 |
 |-- /subfolder
 |    |
 |    + styles.css.scss
 |
 + application.css.scss 

application.html.haml

  = stylesheet_link_tag "application", media: "all"
  = stylesheet_link_tag "subfolder/styles", media: "all"

application.css.scss

@import "styleguide";
@import "styleguide/base/_all";
@import "styleguide/modules/_all-no-grid";
// Omitting rules not relevant to the problem

styles.css.scss

@import "styleguide";
@import "styleguide/grid/_grid";
@import "styleguide/modules/_all-grid";
// Omitting rules not relevant to the problem

styleguide文件存在于gem中,它借助RoR引擎为vendor/stylesheets的资产提供服务。

问题

当我使用预编译资产在生产中运行我的应用程序时,我遇到了指向样式指南的@import的问题。

File to import not found or unreadable: styleguide.
Load path: 
 Sass::Rails::Importer([omitted]/app/assets/stylesheets/local/styles.css.scss)
 (in [omitted]/app/assets/stylesheets/local/styles.css.scss)

解决方法

styleguide本身没有问题,因为只要我从subfolder/styles.css.sccs文件导入application.css.scss文件,一切都按预期工作。

application.html.haml

  = stylesheet_link_tag "application", media: "all"

application.css.scss

@import "styleguide";
@import "styleguide/base/_all";
@import "styleguide/modules/_all-no-grid";
@import "subfolder/styles"
// Omitting rules not relevant to the problem

styles.css.scss

// Same as above, included for completeness
@import "styleguide";
@import "styleguide/grid/_grid";
@import "styleguide/modules/_all-grid";
// Omitting rules not relevant to the problem

解决方案

之前有没有人碰到这样的事情?有没有可能导致这种情况发生的已知问题?

1 个答案:

答案 0 :(得分:2)

我猜这是修改styles.css.scss文件中路径的简单问题。如果你的styleguide目录不在你的子文件夹中(它看起来不像),你必须将你的导入路径指向styles.css.scss中的一个级别。 如果是这种情况,请尝试:

@import "../styleguide";
...

因为application.css.scss位于一个级别,它会在导入期间识别这些路径,而styles.css.scss则不会。