从Heroku Cedar上的父目录导入SCSS文件

时间:2012-05-06 19:12:18

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

我正在尝试部署我在本地工作的Rails 3.1应用程序。但是一旦部署到Heroku(Cedar堆栈),我遇到了一个我本地没有的问题,我找不到任何解决方案。

实际上,在我的一些SCSS文件中,我导入位于父目录中的其他SCSS文件。在我尝试的几种语法中:

 @import "file.css.scss";
 @import "file";
 @import "/file.css.scss";
 @import "/file";
 @import "../file.css.scss";
 @import "../file";

其中大多数都在本地工作,但没有一个在我的heroku Cedar应用程序上工作。我还尝试将导入的文件重命名为带有下划线的“_file.css.scss”,因为它似乎是要导入的SCSS文件的标准格式。但没有改变任何事情。

heroku日志给我的错误是: ActionView::Template::Error (File to import not found or unreadable: /mixins.css.scss.

我现在没有想法,所以如果你有任何线索可以解决这个问题,那将会很感激。

非常感谢, 干杯!

3 个答案:

答案 0 :(得分:0)

语法应为

使用以下文件夹结构

/app/
  /assets/
    /stylesheets/
      /pages/
       index.css.scss
       products.css.scss
      application.css.scss

如果你想在application.css.scss的/ pages /中包含scss文件,你可以这样做:

@import "pages/index";
@import "pages/products";

您还应该能够执行以下操作(但我不确定这是否仅限于在项目中使用Compass)。

@import "pages/*";

能够进行全球导入是很棒的。但我认为它可能只是指南针,或者至少它曾经是。

答案 1 :(得分:0)

如果导入的文件位于同一文件夹中,则以下内容应起作用:

@import './file.css.scss';

我发现当我遇到类似的问题时,有相对路径和文件扩展名是很重要的。因为您试图使用../来查找您在父文件夹中导入的文件,而不是在同一文件夹中。

答案 2 :(得分:-1)

最好的办法是使用内置的Rails Asset Pipeline处理包含样式文件。

app/assets/stylesheets文件夹中,您应该有一个名为application.css的文件。此文件使用Sprockets自动包含放置在app/assets/stylesheets文件夹中的所有css文件。

在文件的顶部,您会看到:

/*
 * This is a manifest file that'll automatically include all the stylesheets available in this directory
 * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
 * the top of the compiled file, but it's generally better to create a new file per style scope.
 *= require_self
 *= require_tree . 
*/

*= require_self部分包含在此实际application.css文件中编写的任何css样式,而*= require_tree .部分包含app/assets/stylesheets中找到的资产。

如果您想更改包含顺序或指定特定样式表,例如mixins.css.scss中名为app/assets/stylesheets的文件,请按以下步骤操作:

/*
 * This is a manifest file that'll automatically include all the stylesheets available in this directory
 * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
 * the top of the compiled file, but it's generally better to create a new file per style scope.
 *= require_self
 *= require_tree . 
 *= require_mixins
*/

链轮的魔力将包含你的文件。