Добавить класс, если условие истинно в Haml
если post.published?
.post
/ Post stuff
иначе
.post.gray
/ Post stuff
я реализовал это с помощью rails helper, и это кажется уродливым.
= content_tag :div, :class => "post" + (" gray" unless post.published?).to_s do
/ Post stuff
второй вариант:
= content_tag :div, :class => "post" + (post.published? ? "" : " gray") do
/ Post stuff
есть ли более простой и haml-специфический способ?
UPD. Haml-специфический, но все же не простой:
%div{:class => "post" + (" gray" unless post.published?).to_s}
/ Post stuff
5 ответов:
- 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
действительно лучше всего положить его в помощника.
%div{ :class => published_class(post) } #some_helper.rb def published_class(post) "post #{post.published? ? '' : 'gray'}" end