Nur um anderen Entwicklern zu helfen, denn es gibt keine ähnliche Frage zu SO.
div class=(is_active? ? 'active' : 'inactive')
div class=('active' if is_active?)
Nur um anderen Entwicklern zu helfen, denn es gibt keine ähnliche Frage zu SO.
div class=(is_active? ? 'active' : 'inactive')
div class=('active' if is_active?)
Antworten:
Siehe die folgenden Beispiele:
div class=(is_active? ? 'active' : 'inactive')
div class=('active' if is_active?)
Der gleiche Ansatz kann verwendet werden, um anderen Attributen dynamische Werte zuzuweisen.
div.councilor class=(councilor.retired? ? "retired" : "")
erzeugt:div.councilor.retired
Ich verwende ein Array von Klassen und ein Null-Element, wenn keine Klasse in die Liste aufgenommen werden muss, und ein kompaktes Array, um Null-Elemente zu entfernen und schließlich alle zusammenzufügen.
div class=(["cday", "col-md-1", day.day == 1 ? "col-md-offset-#{day.cwday-1}" : nil].compact.join(' '))
Wenn Sie mehrere Bedingungen haben, mache ich gerade so etwas wie
div class=(('foo ' if is_foo?) + ('bar' if is_bar?))
Obwohl ich es für einen Makel halte, wenn is_bar? Geben Sie false zurück und der generierte HTML-Code führt zu
<div class="foo "></div>
(Der Fehler ist das leere Zeichen nach dem foo
). Wenn jemand eine Lösung dafür hätte, wäre das großartig.
String#rstrip
in diesem Fall mit 2 Bedingungen : div class=((('foo ' if is_foo?) + ('bar' if is_bar?)).rstrip)
. Oder div class=([('foo' if is_foo?), ('bar' if is_bar?)].compact.join(' '))
für mehrere Bedingungen.