2013-03-14 10 views

Antwort

31

Wenn der Wert eines Attributs nil ist, dann wird das gesamte Attribut weggelassen werden (tatsächlich ist dies der Fall für nil oder false für die meisten Fälle, aber es sieht aus wie das Attribut class anders für false und true) verhält:

input class=('foo' if condition) 

Dies wird Ausgabe

<input class="foo" /> 

wenn conditiontrue ist, und

<input /> 

wenn condition falsch ist.

5

Mit dem Operator splat (*) können Sie bedingte Attribute für Tags in Slim definieren, indem Sie Hashes mit den hinzuzufügenden Attributen verwenden.

http://www.rubydoc.info/gems/slim/frames#Splat_attributes__

Der Splat-Operator wird einen Hash in einen Satz von Attributen erweitern, um den Tag hinzugefügt werden. Wenn der Hashwert leer ist, werden keine Attribute hinzugefügt.

Zum Beispiel

- admin_classes = @User.admin? ? {class: "foo"} : {} 
input *admin_classes 

wenn @ User.admin? == true, sollte es rendern

<input class="foo"> 

sonst wenn @ User.admin? == false, sollte es

<input> 

Für Attribute wie „Klasse“ oder andere Attribute machen, das Attribut Zusammenführen eingeschaltet haben, können Sie auch etwas tun kann:

- admin_classes = @User.admin? ? {class: ["foo","bar"]} : {} 
input *admin_classes class="biz" 

wenn @ User.admin ? == true, sollte es rendern

<input class="foo bar biz"> 

sonst wenn @ User.admin? == false, sollte es rendern

<input class="biz"> 
Verwandte Themen