Si post.published?
.post
/ Post stuff
Autrement
.post.gray
/ Post stuff
J'ai implémenté cela avec l'aide de rails et cela semble moche.
= content_tag :div, :class => "post" + (" gray" unless post.published?).to_s do
/ Post stuff
Deuxième variante:
= content_tag :div, :class => "post" + (post.published? ? "" : " gray") do
/ Post stuff
Existe-t-il un moyen plus simple et plus spécifique au hameau?
UPD. Spécifique à Haml, mais toujours pas simple:
%div{:class => "post" + (" gray" unless post.published?).to_s}
/ Post stuff
{ class:[ (:class1 if cond1), (:class2 if cond2) ] }
la source
.compact.join(" ")
. Vous pouvez simplement faire:class => ["post active", ("gray" unless post.published?)]
Vraiment, le mieux est de le mettre dans une aide.
la source
nil
et l'attribut ne sera pas défini, au lieu de définirclass=""
HAML a une belle façon intégrée de gérer cela:
La façon dont cela fonctionne est que le conditionnel est évalué et s'il est vrai, la chaîne est incluse dans les classes, sinon elle ne sera pas incluse.
la source
Syntaxe Ruby mise à jour:
la source