Просто для того, щоб допомогти іншим розробникам, бо подібного питання щодо SO немає.
div class=(is_active? ? 'active' : 'inactive')
div class=('active' if is_active?)
Просто для того, щоб допомогти іншим розробникам, бо подібного питання щодо SO немає.
div class=(is_active? ? 'active' : 'inactive')
div class=('active' if is_active?)
Відповіді:
Дивіться приклади нижче:
div class=(is_active? ? 'active' : 'inactive')
div class=('active' if is_active?)
Цей же підхід можна використовувати для призначення динамічних значень іншим атрибутам.
div.councilor class=(councilor.retired? ? "retired" : "")
generates:div.councilor.retired
Я використовую масив класів та нульовий елемент, якщо немає необхідності включати клас у список, потім компактний масив, щоб видалити нульові елементи та нарешті приєднатись до всіх разом.
div class=(["cday", "col-md-1", day.day == 1 ? "col-md-offset-#{day.cwday-1}" : nil].compact.join(' '))
Якщо у вас є кілька умов, я зараз роблю щось подібне
div class=(('foo ' if is_foo?) + ('bar' if is_bar?))
Хоча я вважаю, що це помилка, якщо is_bar? повернути помилкові та згенеровані результати HTML у
<div class="foo "></div>
(вада - це порожній символ після foo
). Якби хтось мав рішення, це було б приголомшливо.
String#rstrip
в цьому випадку з 2 -х умов: div class=((('foo ' if is_foo?) + ('bar' if is_bar?)).rstrip)
. Або div class=([('foo' if is_foo?), ('bar' if is_bar?)].compact.join(' '))
на кілька умов.