2012-09-03 30 views
32

करने के लिए वस्तु form_for गुजर रहा चाहते हैं एक आंशिक के लिए form_for वस्तु पारित करने के लिए:रेल आंशिक

<%= form_for @price do |f| %> 
    ... 
    <%= render :partial => "price_page", :object => @price, :as => :f %> 
    ... 
<% end %> 

जब मैं फोन:

undefined method `radio_button' for #<Price:0x3cb1ed0> 

:

f.radio_button 

त्रुटि लाता है मैं f का उपयोग कैसे कर सकता हूं क्योंकि मैं आमतौर पर इस आंशिक में होता हूं? <%= render :partial => "price_page", :locals=>{:f=>f} %>

उत्तर

49

कोशिश गुजर प्रपत्र वस्तु,

<%= form_for @price do |f| %> 
    <%= render :partial => "price_page", :locals => { :f => f } %> 
<% end %> 
अपने आंशिक फ़ाइल में

आप एक स्थानीय चर के रूप में प्रपत्र बिल्डर प्राप्त होगा "f", तो आप नीचे दिए उपयोग कर सकते हैं

<% f.radio_button, {} %> 
+1

इलाज की तरह काम किया। अच्छी नौकरी – Harry

+1

वाह धन्यवाद यह मेरे लिए काम करता है .... भविष्य में + 1 =) –

+0

केवल इस समस्या के साथ मेरी समस्या है कि आप आंशिक के अंदर 'नेस्टेड_फॉर्म' शामिल नहीं कर सकते हैं। त्रुटि देता है। – bcackerman

7

आप नीचे दिए गए जैसे एक स्थानीय चर के रूप में प्रपत्र बिल्डर वस्तु पारित कर सकते हैं स्थानीय रूप

+1

वास्तव में ????? आपने पिछले आदमी के रूप में बिल्कुल ठीक किया –

+0

हाँ लेकिन कुछ ही मिनट बाद! –

+0

हां, तो मैं जवाब देने वाले पहले व्यक्ति होने के लिए क्रूर होने के बारे में क्रूर हूं। – count0

5

मैं यह पता लगाने की कैसे एक रूप builde प्राप्त करने की कोशिश इस सवाल भर में भाग गया एक अतिरिक्त फार्म टैग के बिना आंशिक में आर। यह प्राथमिक उपयोग मामला है जिसे मैं इस प्रश्न के बारे में सोच सकता हूं, इसलिए मैं भविष्य के आगंतुकों के लिए यह उत्तर जोड़ रहा हूं।

मेरी समस्या को हल करने के लिए, मेरे पास मेरे लेआउट में मेरा फॉर्म_ है और मैं केवल आंशिक रूप से मॉडल को पास करता हूं। मेरे आंशिक में मैं fields_for का उपयोग करता हूं।

दिखती है (कुछ) इस तरह:

= form_for @price do |f| 
    ... 
    = render partial: "price_page", object: @price, as: 'price %> 
    ... 

फिर, मेरे आंशिक यह है:

= fields_for price do |f| 
    ...