在SCSS Partial中使用Rails 3.1资产路径

时间:2011-09-15 15:38:25

标签: ruby-on-rails ruby-on-rails-3.1 sass asset-pipeline sprockets

我有以下设置:

app/assets/stylesheets/application.css.scss

/*
*= require_self
*= require fancybox
*/

/* COLORS.. */
/* MIXINS... */
/* FONT STACKS... */

/* IMPORTS */
@import "reset";
@import "supergrid";
@import "rails";
@import "app";
@import "forms";
@import "layout";

在我的各个部分中,我遇到了资产路径的真正问题。当在application.css.scss内或清单加载的任何内容时,我可以使用:

.example { background-image: image-path("background.png"); }

但是,当我使用部分内容时,例如my _layout.css.scss partial,当我尝试同样的事情时,只会从编译文件中省略background-image属性。似乎SCSS资产助手在部分内部不可用?

有没有人让这个工作,我错过了一些明显的东西?或者是不可能在部分中使用资产助手?如果是这样,这是一个主要的主要问题,因为我的整个应用程序结构依赖于SCSS变量和部分之间共享的mixins。

我知道变量和mixin不在sprockets清单中共享,所以如果partials无法访问资产助手,那么我正在考虑将所有内容连接到一个scss文件中,这几乎击败了两个Sass的目的和链轮。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:10)

奇怪,它应该工作..只是一些想法:

  1. 您使用的是最新的gems sass-rails和链轮吗?
  2. 尝试将.css.scss重命名为.scss
  3. 尝试将image-path('background.png')替换为asset-url('background.png', image)image-url('background.png')
  4. 尝试从application.css.scss
  5. 中删除require_self
  6. 尝试从application.css.scss中删除所有指令,并使用@import
  7. 导入这些文件