2011-06-07 28 views
23

Temel olarak 3.0.x içinde mükemmel bir şekilde çalışan bir yapıya sahibim ve şimdi undefined variable hatalarıyla bozuluyor.SASS global değişkenleri parsiyellere geçilmiyor

  • Partials
    • _header.css.sass
  • main.css.sass
  • application.css.sass

_base.css.sass application.css.sass:

//=require 'main' 

main.css.sass:

@import 'partials/base' 
@import 'partials/header' 

Oldukça basit şeyler. sanki daha önce bu hatayı yoktu _base.css.sass

üzerinde tanımlı bir değişken kullandığından

Ben _header.css.sass bir hata alır ve biz _base.css.sass üzerine bu değişkenleri içe aktardığınız çünkü bana hiç mantıklı Aynı bağlamda _header.css.sass'u ithal ediyoruz.

Her kısmi ortamda _base.css.sass'u almak zorunda mıyım? main.css.sass'un global değişkenler gerektiren, ihtiyacınız olan kendi kısmi bölümlerinde kullanılamadığı nokta nedir?

Yapım tamamen yanlışsa, lütfen bana bir alternatif verin, öneriye bayılırım.

+0

"config.assets.precompile" senin arkadaşın :-) [Sadece beni gerçekten yardımcı olan buraya bir göz var !!!] [1] [1]: http: // stackoverflow .com/questions/7134034/using-rails-3-1-assets-pipeline-koşullu-kullanım-specific-css –

cevap

25

//=require'u "dinamik" SASS öğelerini miks ve değişkenler gibi eklemek için kullanamazsınız, çünkü bu yalnızca en "statik" malzeme (saf CSS gibi) eklemek için kullanılır. @import tüm dosyalarınızı application.css.sass içinde yapmanız gerekir. Demiryolları, episode #268 numaralı telefondan bunun iyi bir açıklamasını sunmaktadır.

1

Görünüşe göre, bir bildirim olarak application.css.sass'u kullanmak zorundasınız, yoksa hiçbir şey işe yaramaz.

Temel olarak her şeyi ayırabilirsiniz, ancak kapsamlar paylaşılmadığından uygulama dosyasından çağrılması gerekir. Bana sorarsan

Biraz da bir küstahlık dosyasıdır ...

+1

"Bir manifesto olarak kullanmak zorundasın" ile ne demek istediğini üzerinde ayrıntılı olarak açıklar mısınız? Tüm dosyalarımı 'import' yaptığım ana dosyam olarak 'application.css.sass' kullanıyorum, ancak yine de yukarıda açıklandığı gibi aynı problemle karşılaşıyorum. – Marc

+0

Dosya adının bulunduğu bir .sass kullanıyorsunuz .scss – raulriera

+0

Teşekkürler, bir yazım hatası @raulriera – Draiken

0

zorlama. require yerine @import'u application.css.sass kullanın. require, bir ithalat sistemine sahip olmayan düz css veya şablon motorları içindir.

2

Özgün konu için basit bir çözüm var. Uygulamanız ve ana css dosyalarınız scss dosyaları olmalıdır. Bu, bilinen sözdizimini kullanabileceğiniz anlamına gelir: Ana.Ben de aynı sorunu vardı ve hangi yardımcı bildirerek düşünüyorum

@import 'partials/base' 
@import 'partials/header' 

Bu dosyalar küstahlık dosyalardır ve Sass ;-)

2

büyüklüğü yararlanabilir: SCSS böyle partials alabilirsiniz @imports öncesi değişkenler. Umarım bu yardımcı olur =).