как избежать использования одного и того же условия дважды в тонких видах - PullRequest
0 голосов
/ 27 августа 2018

У меня есть следующий код:

.container
  .row
    .col
      h3 Header
      - if @status < 5
        p Text
    - if @status < 5
      .col
        p More text

Как вы можете видеть, я использую одно и то же условие два раза из-за тонкого отступа.Есть ли способ избежать этого?

Ответы [ 3 ]

0 голосов
/ 27 августа 2018

Вам нужно извлечь условное выражение для помощника, как предложил Дипак, и использовать partial render для извлечения фрагмента html.Более или менее так:

.container
  .row
    .col
      h3 Header
        = render "render_text_1" if status_5? # Humanize status code to be more clear
    .col
      = render "render_text_2" if status_5?
0 голосов
/ 07 августа 2019

Кажется, что с этой разметкой все в порядке, поэтому лучшее решение здесь - оставить все как есть.

0 голосов
/ 27 августа 2018

Единственное, что я думаю, вы можете сделать, это рефакторинг.

Повсеместно используйте помощника вместо жестко закодированного условия, чтобы при изменении значения 5 на 6 вам пришлось вносить изменения только в одном месте.

Вспомогательный метод

def valid_status?(status)
  status < 5
end

просмотр (тонкий)

.container
  .row
    .col
      h3 Header
      - if valid_status?(@status)
        p Text
    - if valid_status?(@status)
      .col
        p More text

Или хотя бы один раз присвоить значение переменной

- valid_status = @status < 5
.container
  .row
    .col
      h3 Header
      - if valid_status
        p Text
    - if valid_status
      .col
        p More text
...