2009-08-06 5 views
10

मैं बहुत की तरह एक आंशिक प्रस्तुत करना:रेल जब के रूप में एक और आंशिक के लिए भेजा आंशिक स्थानीय लोगों बने नहीं अपनी ही स्थानीय

<%= render :partial => 'widgets/some_partial, :locals => {:foo => 'bar'} %> 

तो _some_partial.html.erb के अंदर मैं दो और आंशिक इसलिए की तरह प्रस्तुत करना:

<% #foo.nil? #=> false %> 
<%= render :partial => 'widgets/another_partial', :locals => {:foo => foo} %> 
`<%= render :partial => 'widgets/another_partial_again', :locals => {:foo => foo} %>` 

Foo स्थानीय चर some_partial.html.erb में ठीक है और यहां तक ​​कि another_partial_again.html.erb में भी ठीक है। हालांकि, foo चर another_partial.html.erb में पहुंच योग्य नहीं है, भले ही मैंने इसे स्पष्ट रूप से रेंडर कॉल में पास कर दिया हो।

यहां क्या हो रहा है?

सहायता के लिए धन्यवाद।

+0

"पहुंच योग्य" से आपका क्या मतलब है? क्या यह एक 'अपरिभाषित स्थानीय चर या विधि' फेंकता है या यह 'शून्य' है? क्या आप इस उप-आंशिक पर 'foo' का उपयोग करने वाले कोड को दिखा सकते हैं? – hsribei

+0

यह अनिर्धारित स्थानीय चर – user94154

+0

कोड को सरल करता है: <%= foo %> – user94154

उत्तर

3

हल हो गया। बाहर निकलता है मैं उचित स्थानीय चर भेजने के बिना नियंत्रक से समान आंशिक प्रतिपादन भी कर रहा था। फिर भी धन्यवाद!!!

+1

मुझे वास्तव में एक ही समस्या थी, और मेरा समाधान बिल्कुल वही था - मैंने आपकी गलती देखी जब मैंने इसे समझ लिया: पी –

+0

मुझे भी! हा। मैंने अपना हैमल बदल दिया: "- अगर मायवर" टू "- अगर परिभाषित किया गया है? (Myvar) && myvar" – Chris

+0

वही है, तो AJAX में आंशिक रूप से गुजर रहा था, प्रतीक – yoshyosh

41

मेरे पास undefined local variable or method त्रुटि भी मेरे लिए आई थी जब मैं :locals परिभाषित के साथ आंशिक रूप से प्रस्तुत कर रहा था।

हालांकि, मेरी समस्या के कारण मेरे पास एक अलग समस्या थी, इसलिए मैंने सोचा कि अगर मैं किसी और की मदद करता हूं तो मैं अपना समाधान साझा करूंगा। (यह पृष्ठ पहला परिणाम था जब मैंने इस त्रुटि को सभी के बाद गुगल किया)

असल में यह सुनिश्चित करें कि आप render पर अपने कॉल में :partial => 'path/to/partial' का उपयोग करें।

आईई।

<%= render :partial => 'widgets/some_partial', :locals => {:foo => 'bar'} %> 

नहीं चाहते मैं क्या कर रहा था:

<%= render 'widgets/some_partial', :locals => {:foo => 'bar'} %> 

आसान मेरे जैसे एक रेल/माणिक नौसिखिया याद करने के लिए।

+0

+1 लाइफ सेवर, धन्यवाद !! –

+6

+1 @ asgeo1 अजीब है कि आपको इसे काम करने के लिए 'आंशिक' की आवश्यकता है, लेकिन यह वास्तव में काम करता है! – iwasrobbed

+0

वाह !!! धन्यवाद ... मैं सिर्फ रुबी सीख रहा हूं और मैं इस त्रुटि के बारे में पूरी तरह उलझन में था। काश मैं अधिक अंक संशोधित कर सकता हूं। – Nabheet

0

इस पुराने प्रश्न में फंस गया क्योंकि मुझे एक ही समस्या का सामना करना पड़ा। पता चला कि रेल के साथ 4 यदि आप संग्रह का उपयोग कर या लेआउट नहीं कर रहे हैं सही तरीका है:

# Instead of <%= render partial: "account", locals: { account: @buyer } %> 
<%= render "account", account: @buyer %> 

here दस्तावेज के रूप में।

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