E se post.published?
.post
/ Post stuff
De outra forma
.post.gray
/ Post stuff
Eu implementei isso com o Rails Helper e parece feio.
= 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
Existe uma maneira mais simples e específica de haml?
UPD. Haml-specific, mas ainda não é simples:
%div{:class => "post" + (" gray" unless post.published?).to_s}
/ Post stuff
{ class:[ (:class1 if cond1), (:class2 if cond2) ] }
fonte
.compact.join(" ")
. Você pode simplesmente fazer:class => ["post active", ("gray" unless post.published?)]
Realmente a melhor coisa é colocá-lo em um ajudante.
fonte
nil
e o atributo não será definido, em vez de configuraçãoclass=""
O HAML tem um bom modo de lidar com isso:
A maneira como isso funciona é que a condicional é avaliada e, se verdadeira, a cadeia de caracteres é incluída nas classes; caso contrário, não será incluída.
fonte
Sintaxe Ruby atualizada:
fonte