У меня есть этот haml:
.kudobox
%div.kudos= number_to_human_size_not_bytes kudos
%div= (kudos == 1 || kudos == -1) ? "kudo" : "kudos"
Теперь я хочу .kudobox
имейте a positive
, negative
или zero
класс, в зависимости от количества престижности:
-# < 0 kudos
<div class="kudobox negative">
-# == 0 kudos
<div class="kudobox zero">
-# > 0 kudos
<div class="kudobox positive">
Как я могу достигнуть этого?Спасибо.
Я знаю, что могу
%div{ :class => ( kudos < 0 ? "kudobox negative" : ( kudos == 0 ? "kudobox zero" : ( kudos > 0 ? "kudobox positive" : "kudobox impossible" ) ) ) }
Но нет ли более короткий путь?
Я не слишком внимательно изучил ваш код (он довольно запутанный для чтения), чтобы сказать, есть ли более короткий путь, но я могу сказать, что вам было бы гораздо лучше написать вспомогательный метод, чем располагать всю эту логику в представлении. Вспомогательный метод с обычным старым оператором if или case выполнит работу более чисто, и тогда длина не будет иметь значения. Таким образом, вы можете заменить длинный условный оператор в вашем представлении на что-то легкое для глаз, например
%div{ :class => kudobox(kudos) }