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

And*_*rew 3 ruby-on-rails sass ruby-on-rails-3.1 sprockets asset-pipeline

我有以下设置:

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";
Run Code Online (Sandbox Code Playgroud)

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

.example { background-image: image-path("background.png"); }
Run Code Online (Sandbox Code Playgroud)

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

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

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

任何帮助将非常感谢!

Lev*_*sky 10

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

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