6

ठीक है तो मैं आवेदन नियंत्रक में एक सहायक विधि है:helper_method से आंशिक प्रस्तुत

def run_test(test_name) 
    #computation stuff 
    render :partial => test_name 
end 

और मैं विचारों में इतना है कि यह फोन:

<%= run_test("testpartial") %> 

और यह केवल 1 (के साथ ठीक renders हालांकि ... आंशिक सामग्री को केवल आंशिक सामग्री के बजाय एक सरणी लौटा रहा प्रतीत होता है?), लेकिन अगर मैं रन_टेस्ट हेल्पर कॉल को दो बार दृश्य में डालता हूं तो मुझे डबल रेंडर त्रुटि मिलती है, जो आंशिक के साथ नहीं होनी चाहिए।

कोई विचार?

+0

कौन सा रूबी के संस्करणों और रेल प्रयोग कर रहे हैं, मुझे नहीं पता 3.1 चलते समय यह व्यवहार प्राप्त करें? –

+0

3.1। मैं आरसी उम्मीदवार का उपयोग कर रहा था लेकिन मैंने अभी सुनिश्चित करने के लिए अपग्रेड किया और यह अभी भी काम नहीं कर रहा है। – Msencenb

+0

हम्म ... तो पता चला है कि मैं helper_method का उपयोग कर application_controller में इस सहायक विधि को परिभाषित कर रहा था: run_test हालांकि इसे हेल्पर्स फ़ोल्डर कार्यों में application_helper फ़ाइल में ले जा रहा है। तो .. मेरे पास एप्लिकेशन नियंत्रक में परिभाषित एक सहायक के अंतर और एक सहायक फ़ाइल में परिभाषित एक सहायक के बीच मेरी समझ में पूरी तरह से है। कोई भी मुझे भरने में सक्षम है? – Msencenb

उत्तर

6

render एक नियंत्रक बनाम render एक दृश्य में अलग-अलग तरीके हैं। नियंत्रक अंततः render पर एक दृश्य पर कॉल करता है, लेकिन नियंत्रक की render विधि स्वयं को केवल एक बार बुलाए जाने की अपेक्षा करती है। ऐसा लगता है:

# Check for double render errors and set the content_type after rendering. 
def render(*args) #:nodoc: 
    raise ::AbstractController::DoubleRenderError if response_body 
    super 
    self.content_type ||= Mime[formats.first].to_s 
    response_body 
end 

ध्यान दें कि अगर इसे एक से अधिक बार बुलाया जाता है तो यह कैसे उठाता है?

जब आप फोन helper_method आप दृश्य नियंत्रक के, के लिए उम्मीद के विपरीत, render के नियंत्रक के संस्करण है, जो ActionView के रूप में एक ही तरीके से इस्तेमाल किया जा करने का इरादा नहीं है, जो है के लिए एक प्रॉक्सी देना आंशिक और क्या नहीं प्रस्तुत करने के लिए दोहराया जाना कहा जाता है।

-2

आप दृश्य सहायक की तरह रेल 3.2 में यह सिर्फ काम करता है

render_to_string :partial => test_name, :layout => false 
+4

render_to_string देखने में मददगार नहीं है। –

5

लग रहा है में render_to_string पद्धति का उपयोग करके की कोशिश कर सकते:

# application_helper.rb 
def render_my_partial 
    render "my_partial" 
end 
+1

यह रेल 3.0 में भी काम करता है। यह मेरे लिए सबसे अच्छा जवाब की तरह दिखता है। – sockmonk

+1

मुझे आंशिक नाम "_my_partial.html.erb" पर "my_partial.html.erb" प्रस्तुत करना था, लेकिन यह काम किया। –

+0

सवाल यह है कि नियंत्रक के 'helper_method' द्वारा प्रकट नियंत्रक पर किसी विधि में आंशिक रूप से प्रस्तुत करने का तरीका यह है। यह सवाल का समाधान नहीं करता है। – numbers1311407

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