Si post.published?
.post
/ Post stuff
De otra manera
.post.gray
/ Post stuff
He implementado esto con rails helper y parece feo.
= content_tag :div, :class => "post" + (" gray" unless post.published?).to_s do
/ Post stuff
Segunda variante:
= content_tag :div, :class => "post" + (post.published? ? "" : " gray") do
/ Post stuff
¿Hay una manera más simple y específica de haml?
UPD Específico de Haml, pero aún no es simple:
%div{:class => "post" + (" gray" unless post.published?).to_s}
/ Post stuff
{ class:[ (:class1 if cond1), (:class2 if cond2) ] }
fuente
.compact.join(" ")
. Simplemente puedes hacerlo:class => ["post active", ("gray" unless post.published?)]
Realmente lo mejor es ponerlo en un ayudante.
fuente
nil
y el atributo no se establecerá, en lugar de establecerloclass=""
HAML tiene una forma agradable de manejar esto:
La forma en que esto funciona es que el condicional se evalúa y, si es verdadero, la cadena se incluye en las clases, de lo contrario no se incluirá.
fuente
Sintaxis actualizada de Ruby:
fuente