2010-08-14 12 views
8

मैं एक रेल सहायक विधि है कि कब्जा कर लिया सामग्री ब्लॉक करने के लिए आवरण एचटीएमएल जोड़ सकते हैं और content_for विधि का स्थान ले लेगा, लिख रहा हूँहैम ब्लॉक को पकड़ने के लिए रेल पर रूबी में एक सहायक कैसे लिखें?

- content_for :header do 
//haml code 

जैसे ..would बन

- content :header do 
//haml code 

आदेश में इस मैं कर रहा हूँ करने के लिए हैमल और रूबी ब्लॉक का उपयोग करना। यह

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, या रूबी का अंतर्निहित yield कथन का उपयोग करें।

0

बस बदलने के इन दोनों कर रहे हैं इस

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

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

को वास्तव में व्यवहार में बिल्कुल बराबर। ('और ब्लॉक' संस्करण थोड़ा अधिक प्रदर्शनशील हो सकता है, लेकिन इन दिनों वे एक जैसे हैं।) @ Nex3 बताते हैं, हालांकि, ओपी 'उपज' नहीं बुला रहा था, लेकिन बिना 'ब्लॉक' को वापस कर रहा था इसे बुलाओ – Peeja

संबंधित मुद्दे