2012-04-15 4 views
6

ho questo HamlCome faccio a fare un inline if in Haml

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

Come faccio a fare nulla su questo tavolo display se una condizione è soddisfatta, come per esempio so che posso fare questo, ma mi sento ci deve essere un modo di fare questo in linea

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

risposta

13

si può fare questo:

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

O più laconicamente: '% table.form_upper # profilo-info (display = "# {: nessuno se la condizione}")' – Phrogz

1

in questo modo è meglio perché si separa st yle dalla logica quindi hai più controllo:

In HAML:

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

e nel vostro file CSS:

.nonvisible_fupper { display:none; } 
+1

Si noti che 'visualizzazione: blocco-è la stile di visualizzazione errato per una tabella. Meglio nasconderlo solo quando è necessario e lasciare il default allo stile di visualizzazione corretto altrimenti. – Phrogz

+0

giusto! grazie per la correzione! lo modificherò – YogiZoli

3

Se si fornisce un attributo con un nil o false valore, Haml non impostarlo:

Haml:

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

CSS:

table.empty { display:none } 
+0

la migliore soluzione, scegli questo – YogiZoli