2012-04-15 5 views
6

mam ten hamlJak zrobić inline if w haml

%table.form_upper{:style => "display:none;", :id => 'profile-info'} 
    %tr{:id => 'some-row'} 

Jak zrobić nic w tej tabeli wyświetlane jeśli warunek jest spełniony jak na przykład wiem, że mogę to zrobić, ale czuję tam ma być sposobem inline robić to

-if condtion 
    %table.form_upper{:id => 'profile-info'} 
-else 
    %table.form_upper{:style => "display:none;", :id => 'profile-info'} 
    %tr{:id => 'some-row'} 

Odpowiedz

13

można to zrobić:

%table.form_upper{:style => "display:#{condition ? 'none' : ''};", :id => 'profile-info'} 
+1

Albo bardziej zwięźle: '% table.form_upper # profil-info (display = "# {: none jeśli warunek}")' – Phrogz

1

Ten sposób jest lepszy, ponieważ oddzielenie ul YLE z logiki związku z tym masz większą kontrolę:

W haml:

%table.form_upper{:class => "#{condition ? '' : 'nonvisible_fupper'};", :id => 'profile-info'} 
    %tr{:id => 'some-row'} 

i w pliku CSS:

.nonvisible_fupper { display:none; } 
+1

Zauważ, że 'display: block' jest niewłaściwy styl wyświetlania dla tabeli. Lepiej ukryć je tylko wtedy, gdy jest to konieczne i pozostawić domyślny styl wyświetlania. – Phrogz

+0

w prawo! dzięki za korektę! będę go edytować – YogiZoli

3

Jeśli podasz atrybut z nil lub false wartości, haml nie ustawi go:

Haml:

- # substitute an appropriate semantic class name here (not "hidden") 
%table.form_upper#profile-info{ class:condition && 'empty' } 

CSS:

table.empty { display:none } 
+0

najlepsze rozwiązanie, wybierz ten – YogiZoli