2011-09-10 13 views
17

私はあるファイル(application.css.scss)で定義されたmixinを別の(home.css.scss)で参照しようとしています。アプリケーションを自宅にインポートしようとしましたが、未定義のミックスインエラーが発生します。railsのscssファイル間でミックスインを共有する3.1

すべてのファイルを自動的にインポートする方法はありますか、ファイル間のインポートを管理する最適な方法はありますか?

答えて

25

私はまだ3.1にジャンプすることができませんでしたが、Compass & Sassをかなり使っています。あなたの実際のCSSを生成するSassとは別に、mixin/definition sassを管理することをお勧めします。このように、mixinファイルは、必要に応じてCSSライブラリを繰り返し生成することなく、コードライブラリのように自由に扱うことができます。

だから、あなたは可能性があります。このように

/* my-mixin-concern.scss */ 
$default_foo: 123px !default; 

@mixin some-concern($foo: $default_foo) { 
    // do something 
} 

/* application.scss */ 
$default_foo: 321px; // optionally, pre-set the default value before import. 
@import 'my-mixin-concern'; 
p { @include some-concern; } 

/* home.scss */ 
@import 'my-mixin-concern'; 
body.home p { @include some-concern(9000px); } 

を明示的に使用すると、コードライブラリにそうだろうかと同様に、各SCSSファイルのすべての要件をインポートしています。

0

ピュアRailsのソリューション

ステップ1.名前の変更

application.css -> application.css.scss 

ステップ2.リファクタリング

// application.css.scss 

/* 
*= require_self 
*/ 

@import "mixins.css.csss" 
@import "project.css.scss" 
関連する問題