2012-06-18 9 views
5

मेरे पास एक फॉर्म आंशिक है जिसका उपयोग मैं दो स्थानों में (एक नुस्खा ऐप में) जोड़ने के लिए कर रहा हूं। जब मैंने पहली बार ऐप बनाया, तो मैं चाहता था कि उपयोगकर्ता एक नया नुस्खा कार्ड भरने के दौरान एक नया घटक जोड़ने में सक्षम हो। मैंने एक मोडल पॉपअप और AJAX का उपयोग किया ताकि नया घटक फॉर्म पॉप हो जाए, पूरा हो जाए, और जब सबमिट बटन क्लिक किया गया हो तो कुछ jQuery मोडल बॉक्स को छुपाते हैं और पेज पर कुछ विकल्प टैग अपडेट करते हैं।रेल - AJAX और गैर-AJAX अनुरोधों के लिए आंशिक रूप से आंशिक रूप से उपयोग करते हुए

नुस्खा के रूप में मैं घटक को आंशिक रूप से <%= link_to 'New ingredient', new_ingredient_path, :remote => true %> का उपयोग करके कॉल करता हूं। मेरे घटक new.html.erb फ़ाइल केवल आंशिक के लिए एक कॉल में शामिल हैं:

<%= render 'form' %> 

और _form.html.erb की तरह दिखता है: (संक्षिप्तता के लिए कतरना अन्य क्षेत्रों)

<%= form_for @ingredient, :remote => true do |f| %> 
    <%= render 'shared/ingredient_error_messages' %> 
    <div class="field"> 
     <%= f.label :name %> 
     <%= f.text_field :name %> 
    </div> 
    <div class="field"> 
     <%= f.label :amount %> 
     <%= f.text_field :amount%> 
    </div> 
    <div class="actions"> 
     <%= f.submit "Save ingredient" %> 
    </div> 
<% end %> 

मेरे समस्या है कि अब मैं चाहता हूं कि उपयोगकर्ता साइट के अवयव अनुभाग से एक नया घटक भी तैयार कर सके। चूंकि मुझे साइट के उस हिस्से पर मोडल बॉक्स और jQuery कार्यक्षमता की आवश्यकता नहीं है, इसलिए मुझे इसे वेनिला HTML अनुरोध के रूप में माना जाएगा। हालांकि, मुझे नहीं पता कि मांग पर AJAX कार्यक्षमता को "बंद" कैसे करें, या यदि यह भी अच्छा अभ्यास है।

मैंने नए घटक प्रपत्र के लिंक में पैरामीटर पारित करने और उसमें उपयोग करने के लिए इसका उपयोग करके: फॉर्म में रिमोट एट्रिब्यूट को नियंत्रित करने का विचार किया। यहाँ सबसे अच्छा अभ्यास क्या है? आदर्श रूप से लिंक से फ़ॉर्म की रिमोट एट्रिब्यूट को नियंत्रित करने का एक तरीका, जिससे मुझे अपने AJAX को एक स्थान पर रखने और दूसरे में HTML का उपयोग करने की अनुमति मिलती है। मैं आसानी से एक गैर AJAX के संस्करण के रूप में प्रपत्र नकल कर सकता है और फोन है, लेकिन है कि बहुत सूखी नहीं है ...

उत्तर

4

कैसे सरल के बारे में:

<%= form_for @ingredient, :remote => request.xhr? do |f| %> 
+0

शानदार - साफ, सरल, और (सभी का सबसे अच्छा) - यह काम करता हैं!!! धन्यवाद! – Jim

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