私はその目的のためにそのようななめらかを使用します。
= [[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('|')
素晴らしい – ding280