Если 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
Есть ли более простой и специфичный для хамла способ?
UPD. Хамл специфичен, но все же не прост:
%div{:class => "post" + (" gray" unless post.published?).to_s}
/ Post stuff
{ class:[ (:class1 if cond1), (:class2 if cond2) ] }
источник
.compact.join(" ")
хотя. Вы можете просто сделать:class => ["post active", ("gray" unless post.published?)]
На самом деле лучше всего поместить его в помощника.
источник
nil
и атрибут не будет установлен вместо установкиclass=""
HAML имеет хороший встроенный способ справиться с этим:
Способ, которым это работает, состоит в том, что условное условие оценивается, и если оно истинно, строка включается в классы, если нет, она не будет включена.
источник
Обновлен синтаксис Ruby:
источник