用管道连接link_to

我想用管道连接几个链接。 但所有链接都被if语句包围。

例:

- if condition1 = link_to link1 - if condition2 = link_to link2 - if condition3 = link_to link3 

如果条件1和2为真,则结果应为

 link1 | link2 

任何提示如何做到这一点?

我会为此目的使用类似的smth:

 = [[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) helper,那么事情会变得更好,你可以这样做:

 = [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('|')