сцепить link_to с каналом - PullRequest
       3

сцепить link_to с каналом

0 голосов
/ 27 декабря 2011

Я хочу объединить несколько ссылок с каналом.Но все ссылки заключены в оператор if.

Пример:

- if condition1
  = link_to link1

- if condition2
  = link_to link2

- if condition3
  = link_to link3

Если условия 1 и 2 выполняются, результат должен быть

link1 | link2

Любойнамеки как это сделать?

1 Ответ

0 голосов
/ 27 декабря 2011

Я бы использовал что-то подобное для этой цели:

= [[l1, c1], [l2, c2], [l3, c3]].map{ |l, c| link_to(l) if c }.compact.join('|')

или

= [(link_to(l1) if c1),(link_to(l2) if c2),(link_to(l3) if c3)].compact.join('|')

Последнее немного неуклюже, но дело вкуса. Оба отлично работают для фильтрации ненужных ссылок и объединения остальных из них с |.

Хотя, если ваши условия нетривиальны и у вас их довольно много, было бы лучше перенести эту логику за пределы поля зрения в контроллер или некоторый помощник (в зависимости от ситуации).

И если у вас есть какой-то общий метод для проверки, следует ли отображать ссылку или нет, скажем, show?(link) помощник, то все становится немного лучше, и вы можете сделать это так:

= [l1, l2, l3, l4].map{ |l| link_to(l) if show?(l) }.compact.join('|')

или как это:

= [l1, l2, l3, l4].select{ |l| show?(l) }.map{ |l| link_to(l) }.join('|')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...