sintax rails index ruby haml

ruby - rails - haml to html



Anexar clase si la condiciĆ³n es verdadera en Haml (4)

HAML tiene una buena forma de manejar esto:

.post{class: [!post.published? && "gray"] }

La forma en que esto funciona es que se evalúa el condicional y si es verdadero, la cadena se incluye en las clases, si no, no se incluirá.

Si fue post.published?

.post / Post stuff

De otra manera

.post.gray / Post stuff

Lo he implementado 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 alguna manera más simple y específica para haml?

UPD. Haml-specific, pero aún no es simple:

%div{:class => "post" + (" gray" unless post.published?).to_s} / Post stuff


Realmente lo mejor es ponerlo en un ayudante.

%div{ :class => published_class(post) } #some_helper.rb def published_class(post) "post #{post.published? ? '''' : ''gray''}" end


- classes = ["post", ("gray" unless post.published?)] = content_tag :div, class: classes do /Post stuff

def post_tag post, &block classes = ["post", ("gray" unless post.published?)] content_tag :div, class: classes, &block end = post_tag post /Post stuff


.post{:class => ("gray" unless post.published?)}