Tylko po to, aby pomóc innym programistom, ponieważ nie ma podobnego pytania w SO.
div class=(is_active? ? 'active' : 'inactive')
div class=('active' if is_active?)
Tylko po to, aby pomóc innym programistom, ponieważ nie ma podobnego pytania w SO.
div class=(is_active? ? 'active' : 'inactive')
div class=('active' if is_active?)
Odpowiedzi:
Zobacz przykłady poniżej:
div class=(is_active? ? 'active' : 'inactive')
div class=('active' if is_active?)
To samo podejście można zastosować do przypisania wartości dynamicznych innym atrybutom.
div.councilor class=(councilor.retired? ? "retired" : "")
generuje:div.councilor.retired
Używam tablicy klas i elementu nil, jeśli nie ma potrzeby umieszczania klasy na liście, a następnie tablicy kompaktowej, aby usunąć elementy zerowe i ostatecznie połączyć wszystkie razem.
div class=(["cday", "col-md-1", day.day == 1 ? "col-md-offset-#{day.cwday-1}" : nil].compact.join(' '))
Jeśli masz wiele warunków, robię teraz coś takiego
div class=(('foo ' if is_foo?) + ('bar' if is_bar?))
Chociaż uważam, że to skaza, jeśli is_bar? zwraca false, a wygenerowany kod HTML powoduje
<div class="foo "></div>
(skaza to pusty znak po foo
). Gdyby ktoś miał na to rozwiązanie, byłoby super.
String#rstrip
w tym przypadku z 2 warunki: div class=((('foo ' if is_foo?) + ('bar' if is_bar?)).rstrip)
. Lub div class=([('foo' if is_foo?), ('bar' if is_bar?)].compact.join(' '))
pod kilkoma warunkami.