基本的に、3.0.xで完全に機能していた構造がありますが、現在はundefined variable
エラーで壊れています。
application.css.sass
:
//=require 'main'
main.css.sass
:
@import 'partials/base'
@import 'partials/header'
かなり単純なもの。
_header.css.sass
で定義された変数を使用しているため、_base.css.sass
でエラーが発生します
以前はこのエラーは発生していませんでしたが、_base.css.sass
をインポートするのと同じコンテキストで、これらの変数を_header.css.sass
にインポートしているため、意味がありません。
すべてのパーシャルにも_base.css.sass
をインポートする必要がありますか?必要な独自のパーシャルで使用できない場合、グローバル変数を必要とするmain.css.sass
のポイントは何ですか?
私の構造が完全に間違っている場合は、別の方法を教えてください。提案をお願いします。
//=require
を使用して、ミックスインや変数などの「動的」SASSのものを含めることはできません。これは、最も「静的」なもの(純粋なCSSなど)を含めるためだけに使用されるためです。 @import
内のすべてのファイルをapplication.css.sass
する必要があります。 Railscastsは、これについて episode#268 で適切に説明しています。
元のトピックには簡単な解決策があります。アプリケーションとメインのcssファイルはscssファイルである必要があります。つまり、既知の構文を使用できます。
/*
*= require_self
*= require main
*/
Main.scssでは、次のようにパーシャルをインポートできます。
@import 'partials/base'
@import 'partials/header'
これらのファイルはsassファイルであり、SASSの素晴らしさから恩恵を受けることができます;-)
私も同じ問題を抱えていたと思います。助けになったのは、@ importsの前に変数を宣言することでした。これが誰かに役立つことを願っています=)。
どうやら、マニフェストとしてapplication.css.sass
を使用する必要があります。そうしないと、何も機能しません。
基本的にすべてを分離できますが、スコープが共有されていないため、アプリケーションファイルから呼び出す必要があります。
あなたが私に尋ねるなら、少し強すぎる...
それはsassファイルです。 require
の代わりに@import
でapplication.css.sass
を使用します。 require
は、インポートシステムを持たないプレーンなCSSまたはテンプレートエンジン用です。