Wenn post.published?
.post
/ Post stuff
Andernfalls
.post.gray
/ Post stuff
Ich habe dies mit Rails Helper implementiert und es scheint hässlich.
= content_tag :div, :class => "post" + (" gray" unless post.published?).to_s do
/ Post stuff
Zweite Variante:
= content_tag :div, :class => "post" + (post.published? ? "" : " gray") do
/ Post stuff
Gibt es einen einfacheren und hamlspezifischeren Weg?
UPD. Haml-spezifisch, aber immer noch nicht einfach:
%div{:class => "post" + (" gray" unless post.published?).to_s}
/ Post stuff
{ class:[ (:class1 if cond1), (:class2 if cond2) ] }
quelle
.compact.join(" ")
. Sie können einfach tun:class => ["post active", ("gray" unless post.published?)]
Wirklich das Beste ist, es in einen Helfer zu stecken.
quelle
nil
und das Attribut wird nicht festgelegt, anstatt zu setzenclass=""
HAML hat eine schöne eingebaute Methode, um damit umzugehen:
Dies funktioniert so, dass die Bedingung ausgewertet wird und wenn true, wird die Zeichenfolge in die Klassen aufgenommen, andernfalls wird sie nicht aufgenommen.
quelle
Aktualisierte Ruby-Syntax:
quelle