2012-04-15 10 views
6

ich diese hamlWie mache ich eine Inline-if-Anweisung in haml

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

habe Wie ich keine auf dieser Tabelle kann angezeigt werden, wenn eine Bedingung wie beispielsweise erfüllt ist ich weiß, ich kann dies tun, aber ich fühle mich hat es bekommt ein Inline-Weg, um dies zu tun

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

Antwort

13

Sie dies tun können:

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

Oder mehr lapidar: '% table.form_upper # Profil-Informationen (Display = "# {: keine, wenn die Bedingung}")' – Phrogz

1

auf diese Weise ist besser, weil Sie st trennen daher YLE von Logik haben Sie mehr Kontrolle:

In HAML:

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

und in der CSS-Datei:

.nonvisible_fupper { display:none; } 
+1

Beachten Sie, dass 'Anzeige: block' ist die falscher Anzeigestil für eine Tabelle. Es ist besser, es nur bei Bedarf zu verstecken und es ansonsten auf den korrekten Anzeigestil einzustellen. – Phrogz

+0

richtig! Danke für die Korrektur! Ich werde es bearbeiten – YogiZoli

3

Wenn Sie bieten ein Attribut mit einem nil oder false Wert, Haml wird es nicht einstellen:

Haml:

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

CSS:

table.empty { display:none } 
+0

beste Lösung, wählen Sie diese – YogiZoli

Verwandte Themen