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?)}