2010-06-12 7 views
7

przypadku korzystania haml na Ruby on Rails, następnieW języku HAML na Ruby on Rails, jak korzystać z filtru sass?

:sass 
    #someDiv 
    border: 3px dashed orange 

nie będzie miał żadnego <style> tag wokół nich.

a następnie

:css 
    :sass 
    #someDiv 
     border: 3px dashed orange 

nie ruszy na filtrze :sass, ale

:css 
:sass 
    #someDiv 
    border: 3px dashed orange 

rozpocznie się na filtrze :sass, ale to jest poza znacznikiem <style>. Jak zatem można zastosować filtr :sass? Możemy ręcznie owijać wokół niego kod <style>, ale nie jest to typowe, że chcemy wygenerować css z sass, ale nie wewnątrz znacznika <style> w pliku HAML.

Odpowiedz

12

Dokumentacją związaną z Pańskim pytaniem jest here na haml-lang.com i bardziej szczegółowe wyjaśnienie na sass-lang.com.

Uważam, że brakuje wam tego, że sass nie powinien być używany w plikach haml. Powinny być umieszczone w public/stylesheets/sass z rozszerzeniem .sass. Zostaną one skompilowane do pliku .css w public/stylesheets, który następnie zostanie połączony z twoim layoutem.

z linku sas-lang.com:

Na przykład publiczny/stylów/Sass/main.scss zostanie skompilowany do publicznego/stylów/main.css.

byłoby wtedy użyć stylesheet_link_tag pomocnika (lub połączyć stylów ręcznie):

<%= style_sheet_link_tag 'main' %> 

Jeśli naprawdę trzeba użyć Sass ciągu haml, here jest odpowiedzią. Nie można zagnieżdżać filtrów w Haml. Ty widocznie trzeba zrobić coś takiego:

%style(type="text/css") 
    :sass 
    div 
     color: red 

wierzę this była pierwotna odpowiedź z grup haml google.

+4

hm ... jeśli Sass nie powinny być używane w pliku haml, wtedy filtr Sass nie powinny istnieć? –

+0

Ma swoje zastosowania, ale używanie zewnętrznego arkusza stylów jest zwykle łatwiejsze w utrzymaniu i SUCHE. Odsyłacz: http://stackoverflow.com/questions/1127927/jest-używaniem-przy- -przypisanym-początkowym-przypisie-uponowym – Awgy

+0

Filtr Sass/Scss przydałby się na przykład do 404, 422 i 500 jako stron z osobnym układem i Buforowanie włączone, więc po wdrożeniu po prostu poprosimy strony o uzyskanie statycznych plików html. Po prostu nie lubię pisać zwykłego css. – tig

2

Można również napisać niestandardowy filtr, aby wygenerować również tag stylu.

Poniższy przykład definiuje nowy filtr ": csass".

require "haml/filters" 
module Haml::Filters::Csass 
    include Haml::Filters::Base 
    include Haml::Filters::Sass 
    lazy_require 'sass/plugin' 
    def render(text) 
    src = super 
    "<style>#{src}</style>" 
    end 
end 

Więc można zrobić to tak :)

:csass 
    #someDiv 
    border: 3px dashed orange 
10

Since 4.0.0,

Filtr :sass teraz zawija swoje wyjście w tagu stylu, jak zrobić nową :less i :scss filtry.

Przed 4.0.0, po prostu zawinąć go w %style:

%style 
    :sass 
    // so sassy! ;)