[英]concatenate link_to with pipe
我想用管道連接一些鏈接。 但是所有鏈接都被if語句包圍。
例:
- if condition1
= link_to link1
- if condition2
= link_to link2
- if condition3
= link_to link3
如果條件1和2為真,則結果應為
link1 | link2
有什么提示怎么做嗎?
為此,我將使用類似的方法:
= [[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('|')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.