2013-10-22 60 views
1

我需要一個幫助器,它可以生成包含活動類的<li>中的鏈接。如何將方塊傳遞給方法調用?

沒有支撐塊,這是很容易:

def nav_item(*args, &block) 
    url = args[1] 
    clazz = 'active' if current_page?(url) 

    content_tag(:li, :class => clazz) do 
     link_to(*args) 
    end 
    end 

但像link_to我想幫助我的支持塊定義內容。隨着的link_to我可以這樣做:

那麼,如何支持同樣在我的幫助?

我需要做的就是通過link_to。我目前的嘗試

def nav_item(*args, &block) 
    url = if block_given? 
     args.first 
    else 
     args[1] 
    end 
    clazz = 'active' if current_page?(url) 
    content_tag(:li, :class => clazz) do 
     if block_given? 
     # What goes here? 
     else 
     link_to(*args) 
     end 
    end 
    end 
+0

所以你的問題是如何將塊作爲變量傳遞給函數,就像你的例子中的'block'那樣? – whatyouhide

回答

5

您可以將該塊作爲最後一個arg傳遞給link_to。像這樣:

def nav_item(*args, &block) 
    url = if block_given? 
    args.first 
    else 
    args[1] 
    end 
    clazz = 'active' if current_page?(url) 
    content_tag(:li, :class => clazz) do 
    if block 
     link_to(*args, &block) 
    else 
     link_to(*args) 
    end 
    end 
end       
+0

我試過了,但沒有奏效,原來這是因爲其他地方有錯誤。謝謝。 – Undistraction