2011-06-18 19 views
11

Używam Rails 3.1RC4 z domyślną konfiguracją SASS. Mam następujące plikiSASS Global Variables + Rails 3.1

application.css.scss

/* 
* This is a manifest file that'll automatically include all the stylesheets available in this directory 
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at 
* the top of the compiled file, but it's generally better to create a new file per style scope. 
*= require_self 
*= require_tree . 
*/ 

_variables.css.scss

$var1 : somevalue; 
... 

site_layout.css.scss

@import "variables"; 
... Some Sass Code 

Ale nie mam dostępu do zmiennych zdefiniowanych w _variables.css.scss w witrynie site_layout. Co ja robię źle? Rails najwyraźniej znajduje plik zmiennych, ponieważ nie wyrzuca błędu "nie znaleziono pliku", co robi, jeśli zmienię importowaną nazwę pliku. Wciąż vary nie są przenoszone.

Wszelkie pomysły?

Dzięki!

+0

Mam dokładnie ten sam problem z mixinem przechowywanym w częściowym. Czy kiedykolwiek wymyśliłeś rozwiązanie? – LandonSchropp

+0

Nie, nie mam. Na razie skomentowałem instrukcje require w moim application.css.scss i @import ręcznie wszystkie pozostałe pliki sass. To działa dobrze, ale mam nadzieję, że to tylko tymczasowe rozwiązanie. – Denny

Odpowiedz

3

Problem wydaje się być rozwiązany dzięki najnowszym wersjom zębatek &. W twoim gemfile:

gem 'rails', :git => "git://github.com/rails/rails.git", :branch => "3-1-stable" 
+0

Awesome. Dziękujemy za przesłanie rozwiązania. – LandonSchropp

-3

Pierwsza część twojego pytania (fragment kodu application.css.scss) nie ma tutaj żadnego znaczenia, ponieważ jest to tylko skomentowany kod, więc pominę tę część.

Dla drugiego fragmentu kodu, nie wierzę, że SASS jest skonfigurowany do importowania "częściowego" zupełnie jak tu robisz. Byłbyś lepiej robić coś takiego:

_variables.scss (przemianowane z _variables.css.scss):

$var1: somevalue; 

Zauważ, że znak podkreślenia w nazwie pliku nie jest wymagane jak to byłoby dla części Ruby. Można równie dobrze nazwać to variables.scss tak długo, jak zmienić instrukcję import do @import "variables";

site_layout.scss (przemianowane z site_layout.css.scss)

@import "_variables"; 

.test_thingy { 
    color: $var1; 
    } 

To wygeneruje site_layout.css plik zawierający następującą zamianę kodu:

.test_thingy { 
    color: somevalue; } 

Pamiętaj, że nie ma potrzeby przechowywania plików n amed jak filename.css.scss, podobnie jak w przypadku plików HAML/ERB. Po prostu nazwij plik, jaki ma być. Na przykład: filename.scss spowoduje, że SASS automatycznie wygeneruje plik CSS o nazwie filename.css.

+0

Plik 'application.css.scss' ma znaczenie. Skomentowany kod służy do konfiguracji Sprockets. Reszta twojego rozwiązania też nie zadziałała. – LandonSchropp

+0

Nie sądzę, że to jest poprawne. Podkreślenie jest sposobem definiowania sass partials, jak opisano tutaj: http://sass-lang.com/tutorial.html. filename.css.scss jest domyślną nazwą pliku Rails 3.1, więc pozostanę z tym. Myślę, że mogłeś źle zrozumieć. Tu nie chodzi o sass, w szczególności o Rails 3.1. – Denny

+0

@helixed, nie wiem, dlaczego to nie zadziałało, ale moja odpowiedź została przetestowana. –