3

我正在尝试部署我在本地工作的 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.

我现在没有想法,所以如果你有任何线索来解决这个问题,我将不胜感激。

非常感谢,干杯!

4

3 回答 3

0

如果您导入的文件位于同一文件夹中,则以下内容应该有效:

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

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

于 2012-10-12T15:08:25.887 回答
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/*";

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

于 2012-08-08T00:19:48.717 回答
-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
*/

sprockets 的魔力将为您包含您的文件。

于 2012-05-08T03:16:25.633 回答