Условные теги с HAML

У меня есть этот 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" ) ) ) }

Но нет ли более короткий путь?

5
задан 19 June 2010 в 19:36
поделиться

1 ответ

Я не слишком внимательно изучил ваш код (он довольно запутанный для чтения), чтобы сказать, есть ли более короткий путь, но я могу сказать, что вам было бы гораздо лучше написать вспомогательный метод, чем располагать всю эту логику в представлении. Вспомогательный метод с обычным старым оператором if или case выполнит работу более чисто, и тогда длина не будет иметь значения. Таким образом, вы можете заменить длинный условный оператор в вашем представлении на что-то легкое для глаз, например

%div{ :class => kudobox(kudos) }
10
ответ дан 13 December 2019 в 22:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: