2010-09-27 7 views
6

मान लीजिए मैं my_template.html.erb नाम के एक रूबी ERB टेम्पलेट है, और इसे निम्नलिखित शामिल हैं:क्या रूबी ईआरबी टेम्पलेट में उपलब्ध चर सूचीबद्ध करने का कोई तरीका है?

<div><%= @div_1 %></div> 
<div><%= @div_2 %></div> 
<div><%= @div_3 %></div> 

वहाँ एक रास्ता मैं प्रोग्राम के टेम्पलेट में सभी उपलब्ध चर बाहर सूचीबद्ध कर सकते हैं है?

उदाहरण के लिए

, निम्नलिखित विधि:

['div1','div2','div3'] 

किसी भी मदद की बहुत सराहना की जाएगी:

def list_out_variables 
    template = File.open("path_to/my_template.html.erb", "rb").read 
    erb = ERB.new(template) 
    erb.this_method_would_list_out_variables 
end 

की तरह कुछ लौट आते हैं।

धन्यवाद, माइक

+1

पता लगाएं कि क्या संभव है पता नहीं है, लेकिन यह मेरे लिए एक बुरा विचार की तरह लगता है। आम तौर पर, दृश्य नियंत्रक पर निर्भर करता है, न कि अन्य तरीकों से। 'Instance_variables' कहने के लिए –

उत्तर

21

एक (नियंत्रक से) अपने .erb फाइल करने के लिए उपलब्ध चर की सूची प्राप्त करने के लिए:

<% debugger %> 

:

ERB में एक ब्रेकपाइंट जोड़े फिर सभी उपलब्ध इंस्टेंस चर देखने के लिए डीबगर में instance_variables टाइप करें।

जोड़ा गया: नोट करें कि instance_variables रूबी क्लास ऑब्जेक्ट और उसके सभी उप-वर्गों से उपलब्ध एक तरीका है। (जैसा कि @ माइकज़टर द्वारा नोट किया गया है।) यदि आप वास्तव में चाहते थे तो डीबगर का उपयोग करने के बजाए आप प्रोग्राम को अपने स्विम से प्रोग्राम कर सकते हैं।

आप वर्तमान ऑब्जेक्ट के लिए आवृत्ति चर की एक सूची वापस प्राप्त करेंगे।

जोड़ा गया: एक .erb फ़ाइल द्वारा उपयोग चरों की सूची प्राप्त करने के लिए:

# <template> is loaded with the entire contents of the .erb file as 
# one long string 
var_array = template.scan(/(\@[a-z]+[0-9a-z]*)/i).uniq 
+1

-1 एक डीबगर कमांड है। यह 'ऑब्जेक्ट' – mikezter

+4

@ माइकज़टर: -1 पर एक विधि है? थोड़ा कठोर लगता है। डीबगर दस्तावेज़ (उत्तर में लिंक देखें) इतना स्पष्ट नहीं हैं। अगर आप बस यह इंगित करेंगे कि डीबगर में टाइपिंग instance_variables टाइपिंग वास्तव में उस विधि का नाम वर्तमान ऑब्जेक्ट पर भेज रहा है, तो मैंने आपकी टिप्पणी को ऊपर उठाया होगा। –

+0

मदद के लिए धन्यवाद! किसी और के लिए: रेगेक्स (कोष्ठक) के भीतर कैप्चर समूह अनावश्यक है, और परिवर्तनीय नामों की केवल एक सरणी के बजाय नेस्टेड सरणी का कारण बनता है। –

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

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