2011-11-20 25 views
5

मैंने "0 भाषा बनाएं" पर क्लिक करते समय इस के समान कुछ मोडल में शामिल करने का प्रयास किया है।मोडल में आंशिक रेल (विभिन्न मॉडल से आंशिक प्रस्तुत करना)

अब जब मुझे वास्तव में पता नहीं चला कि कोड कैसे काम करता है, तो मैंने इस Rails - AJAX a Modal Dialog? और कुछ के बीच मिश्रण करने की कोशिश की।

बात यह है कि आंशिक अब मोडल में प्रस्तुत किया जाता है। लेकिन जब मैं "सेव" हिट करता हूं, तो सत्यापन "सामान्य" बनाने-नए दृश्य पर वापस जायेगा और सीधे मोडल के भीतर सत्यापन त्रुटियों को नहीं दिखाएगा।

  1. मैं पॉप अप अप मोड में सत्यापन त्रुटियों को सीधे कैसे दिखा सकता हूं?

  2. जब मैं सहेजता हूं, मुझे किसी भी तरह से इस मोडल और सामान्य बचत से बचाने के बीच अंतर करना चाहिए, क्योंकि इस आंशिक को कहीं और से बुलाया जाएगा और नई बनाई गई वस्तु को सीधे एक नई वस्तु के रूप में एक बूंद के भीतर सेट करने की आवश्यकता होगी नीचे। मुझे लगता है कि मुझे प्रतिक्रिया प्रारूप से अलग होना होगा और फिर नई आईडी को ड्रॉपडाउन आईडी पर सेट करने के लिए जेएस का उपयोग करना होगा?

यहां कुछ कोड अभी तक लिखे गए हैं। इस दृश्य में जहां मैं आंशिक शामिल करता हूं, ऐसा लगता है कि मैं इसे एक और नियंत्रक कहता हूं (जैसा कि मैं एक अलग नियंत्रक-नए-दृश्य पर हूं)।

$.get('<%= url_for :controller => 'customers', :action => 'new' %>', 
      function(data) { 
       $('#customer-modal').html(data); 
      } 
    ); 
फिर अलग अनुरोध प्रारूप के बीच "customres" नियंत्रक distinguishs में

नया और अलग आंशिक (इस मामले में "_ajax_form.html.erb") प्रस्तुत करता है:

if request.xhr? 
    render "_ajax_form", :layout => false 

इस आंशिक में , मैं "simple_form_for @customer,: remote => true do | f] ...." का उपयोग करता हूं, "तो मुझे लगता है कि सबमिट अंत में मानक से अलग दिखना चाहिए, क्योंकि यह नियंत्रक पर सामान्य" बना "कहता है?

<div class="modal-footer"> 
    <%= f.button :submit, :class => 'btn primary' %> 
    <a id='cancel-form' class= "btn small info">cancel</a> 
    </div> 

जो स्पष्ट करता है मैं गलत क्या कर रहा हूँ या कैसे यह रेल में मेरे अनुभव और जे एस/AXAX के रूप में किया जाना चाहिए अभी तक भी अनुभव नहीं कर रहे .. किसी भी मदद के लिए धन्यवाद;)

  • संपादित:

simple_form_for @customer, :url => url_for(:action => 'new_from_sale', :controller => 'customers') do |f|

: अब मैं अपने विशेष आंशिक में एक संस्करण है जहाँ जो मोडल भीतर भरी हुई है है, "new_from_sale" कहा जाता है एक अलग कार्रवाई simple_form_for भीतर फोन करेगा

फिर नियंत्रक में, जब इस नई ऑब्जेक्ट की बचत ठीक है, तो मैं नई आईडी के साथ पहले नाम के दृश्य को एक परम के रूप में रीडायरेक्ट करता हूं जो तब ड्रॉपडाउन भरता है। अन्य मामले में, जब नई वस्तु को सहेजा नहीं जा सकता है, तो मुझे उस मोडल में अभी भी त्रुटियों को दिखाने के लिए किसी भी तरह की आवश्यकता है। अब तक दोनों को या तो सीधे आंशिक render :partial => "customers/ajax_form" रेंडर करने के लिए या वापस जे एस कोड render :js => "$('#sale_customer_id').val(#{@customer.id});" अभी तक कार्य नहीं करेगा देने की कोशिश करता है .. लेकिन मैं अपने भाग्य आजमाने पर रखेंगे ..

उत्तर

2

यहाँ मैं एक कैसे करना चाहते हैं की एक बुनियादी उदाहरण है मोडल रूप है जो मैं एक ऐसी ही सवाल (Rails and modal jquery dialog form) के जवाब में लिखा है:

https://github.com/ramblex/modal-form

आप फार्म का है कि संवाद में लोड हो जाता है करने के लिए :remote => true जोड़ने की जरूरत है।इससे जेएस प्रारूप को निर्माण क्रिया से प्रस्तुत किया जाएगा। फिर आप create.js.erb में प्रतिक्रिया को संभाल सकते हैं।

+0

धन्यवाद, जैसा कि आप करते हैं, सब कुछ हमारे कारण के लिए लागू नहीं था, लेकिन इसने कुछ अच्छे संकेत दिए .. एफ.ई., हम मोडल के भीतर आंशिक और अलग-अलग वस्तुओं को संपादित करने के लिए अलग-अलग उपयोग करते हैं। वहां हमें अलग-अलग अनुमान लगाने की आवश्यकता होगी, मुझे लगता है कि इसका उपयोग न करें: दूरस्थ => सत्य, अन्यथा प्रतिपादन काम नहीं करता है .. – fisco

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