1

アプリを Rails 3.0 から 3.2 にアップグレードしていますが、scss コードの一部に問題があります。stylin.css には以下が含まれます。

/*
= require_self
= require_tree .
*/

stylin.css.scss には以下が含まれます。

@import "palette";
@import "round";
@import "html_elements";
@import "graph";
@import "menu";
@import "button";
@import "pop_up";
@import "basic_abrev";

スタイリング.cssが更新されると、「パレット」がインポートされますが、それ以外はインポートされません。その結果、最初のページをロードするときに次のエラーが発生します。

Undefined mixin 'round_corners'

「round.css.scss」の先頭に以下が含まれているためだと思います。

@mixin round_corners($radius: 8px) {
  border-radius: $radius;
  -moz-border-radius: $radius;
  -webkit-border-radius: $radius;
}

変数が渡されなかった場合、デフォルトは 8px になります。次の場合、'20px' が mixin に渡されます。

@include round_corners(20px);

これは3.0で機能しました。これはもう不可能ですか?そうでない場合は、多数のミックスインを作成するか、角を丸くするためのミキシング/インクルード機能の使用を中止する必要があります。

ありがとう。

4

1 に答える 1

1

私はここでこれを見つけました:

複数のSassファイルを使用する場合は、通常、これらのSprocketsディレクティブの代わりにSass@importルールを使用する必要があります。Sprocketsディレクティブを使用すると、すべてのSassファイルが独自のスコープ内に存在し、変数またはミックスインが定義されたドキュメント内でのみ使用できるようになります。

私はここでこれを見つけました:

SassでSprockets2.xを使用すると、最終的にはかなり大きな問題が発生します。// = requireディレクティブは、Sassミックスインや変数などをファイル間で共有することを許可しません。

ここでこれを見つけました:

Sprocketsは、require、require_tree、およびrequire_selfと呼ばれるコメント内に配置されるいくつかのディレクティブを提供します。SASS/SCSSファイルでそれらを使用しないでください。それらは非常に原始的であり、Sassファイルではうまく機能しません。代わりに、sass-railsがrailsプロジェクトの規則と統合するようにカスタマイズしたSassのネイティブ@importディレクティブを使用してください。

これ(スプロケットコマンド)をstylin.css.scssファイルから削除すると、すべてが機能しました。

/*
= require_self
= require_tree .
*/
于 2012-10-23T23:44:00.057 に答える