2011-12-26 93 views
0

我想連接幾個鏈接與管道。但是所有鏈接都被if語句包圍。連接link_to與管道

例子:

- if condition1 
    = link_to link1 

- if condition2 
    = link_to link2 

- if condition3 
    = link_to link3 

如果條件1和2是真實的,結果應該是

link1 | link2 

任何提示如何做到這一點?

回答

0

我會用水木清華一樣,爲此目的:

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

很好,謝謝 – ding280 2011-12-27 23:40:17