我正在尝试部署我在本地工作的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.
我现在没有想法,所以如果你有任何线索可以解决这个问题,那将会很感激。
非常感谢, 干杯!
答案 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
*/
链轮的魔力将包含你的文件。