Как дедуплицировать простую логику

#ruby-on-rails #ruby

Вопрос:

У нас есть следующий фрагмент кода, интегрированный во многие наши страницы:

 -if test.passed  .label.label-success passed -else  .label.label-danger failed  

Я хотел бы удалить это дублирование кода. Как лучше всего это сделать? Частичное в tests_controller , или функция, которая возвращает соответствующий тег content_tag в помощнике/самой модели? Или, может быть, каким-то другим способом, с которым я не знаком?

Спасибо за вашу помощь

Комментарии:

1. Я согласен, что частичные и вспомогательные методы-это ваши варианты. Какой вариант предпочесть, зависит от того, насколько сложна структура HTML и логика. В вашем простом примере я бы использовал вспомогательный метод. Но это, безусловно, самоуверенный ответ.

2. Я думаю, что это очень ориентированный на мнение вопрос. Лично я бы просто сделал метод, который можно вызвать, и вернул тег. Но я думаю, что оба способа похожи. test.passed? или что-то в этом роде.

3. Я понимаю, я думал, что между программистами Rails может быть какой-то консенсус по этому вопросу

4. @fynsta Я думаю, что единственный консенсус, который вы найдете, заключается в том, что включение генерации HTML в модель не одобряется.