2010-08-14 36 views
8

我寫一個Rails的helper方法,將包裝HTML代碼添加到拍攝的內容塊,更換content_for方法,如如何在Ruby on Rails中編寫幫助程序來捕獲Haml塊?

- content_for :header do 
//haml code 

..would成爲

- content :header do 
//haml code 

爲了做到這一點,我使用Haml和Ruby塊。這是它看起來像

def content(name,&block) 
content_for name do 
    capture_haml do 
    haml_tag "div",{:id=>name.to_s} do 
     haml_tag "div",{:id=>"#{name.to_s}_group"} do 
     block 
     end 
    end  
    end  
end 
end 

但我不能得到這個工作。沒有錯誤消息。它根本不顯示塊!我不知道我做錯了什麼。我希望得到第二個意見。

回答

10

你正在做的事情大致是正確的,但實際上並沒有調用#content這個塊。爲此,請使用block.call或Ruby的內置yield語句。

0

只是改變這個

haml_tag "div",{:id=>"#{name.to_s}_group"} do 
    yield 
end 

haml_tag "div",{:id=>"#{name.to_s}_group"},&block 
+0

這兩個實際上是行爲完全等同。 ('&block'版本可能稍微有點高性能,但是現在它們大致相同。)然而,@ nex3指出,OP並沒有調用yield,而只是簡單地返回'block'稱它。 – Peeja 2014-03-19 15:13:16

相關問題