2010-02-25 27 views
8

से आंशिक रूप से प्रस्तुत करने के लिए कैसे करें मेरे पास एक चयन है जो अलग-अलग चयन में चयन के आधार पर पॉप्युलेट हो जाता है ऐसा करने के लिए, मैंने 'डायनामिक सिलेक्शन मेन्यूस' पर रेलसकास्ट # 88 में अनुशंसा की है।जावास्क्रिप्ट

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

function staffSelected() { 
    $('date_area').show(); 
    <% render :partial => "calendar" -%> 
} 

किसी को भी एक अच्छा समाधान है?

+2

उम, एक बात के लिए, और यह वास्तव में सिर्फ आरंभ करने के लिए है , erb की वह पंक्ति कुछ भी आउटपुट नहीं कर रही है क्योंकि यह '<%' के बजाय '<% =' होना चाहिए। इसके अलावा, मुझे लगता है कि आपको उस आंशिक सामग्री को पोस्ट करना होगा, जो व्यवहार आप खोज रहे हैं उसके बारे में अधिक विशिष्ट हो। – tfwright

उत्तर

5

आप परिवर्तन घटनाओं का पता लगाने के लिए जावास्क्रिप्ट के आंशिक अंदर प्रस्तुत नहीं कर सकते हैं। रूबी सर्वर की तरफ है, और जावास्क्रिप्ट क्लाइंट साइड है। जब तक आपकी जावास्क्रिप्ट चलती है, तब तक आपकी रूबी को नियमित ओएल 'एचटीएमएल में पार्स कर दिया गया है।

onchange घटना में अपने सर्वर को हिट करने के लिए एक AJAX नियंत्रण का उपयोग करें (प्रोटोटाइप/scriptaculous लोगों देखते हैं):

आपका सबसे अच्छा शर्त निम्न करने के लिए है। आपका सर्वर अन्य ड्रॉपडाउन, या को अपडेट करने के लिए आरजेएस वापस भेज सकता है, यह मानक JSON वापस लौटा सकता है और आप AJAX कॉल की onSuccess विधि में अन्य ड्रॉपडाउन मैन्युअल रूप से पॉप्युलेट कर सकते हैं।

+0

ओह, वाह, मुझे यह भी नहीं मिला कि यह एक स्थिर फ़ाइल थी; मैंने सोचा कि वे इसे कई बार मार रहे थे। – Matchu

+0

मुझे विश्वास है कि यह एक स्थिर फ़ाइल है। सवाल उस पहलू पर थोड़ा अस्पष्ट है। –

+0

आह हाँ, एक स्थिर फ़ाइल में। – 99miles

8

मुझे लगता है कि यह वही है जो आप खोज रहे हैं। मैं के साथ "रंग" आईडी एक DIV भीतर आंशिक प्रतिपादन कर रहा हूँ, आंशिक प्रदान की गई है केवल यदि चयनित रेडियो बटन का मूल्य लाल है:, अच्छी तरह से

<script language="javascript" type="text/javascript"> 
jQuery(function($){ 
    $('#radio-buttons input[type=radio]').click(function() { 
    if ($(this).attr("value") === "red") { 
     $("#colors").html('#{escape_javascript(render :partial => "colors")}'); 
    } 
    }); 
}); 
</script> 
+0

मैंने कोशिश की। यह पृष्ठ पर पाठ के रूप में बस # {escape_javascript (प्रस्तुत करें: partial => "")} प्रिंट करें। – Bongs

+2

@ बोंग्स यह एक .erb फ़ाइल में जाने के लिए माना जाता है ताकि रूबी, # {escape_javascript (प्रस्तुत करें: आंशिक => "")}, स्ट्रिंग अक्षर के रूप में व्याख्या किए जाने के बजाय उचित रूप से प्रतिस्थापित किया जाएगा। – jeconner

+1

कुछ प्रमुख चीजें। एक .erb फ़ाइल में भी आपको अपनी स्ट्रिंग को <%= %> में लपेटना होगा, और डबल कोट्स का उपयोग करना सुनिश्चित करें। रूबी सिंगल कोट्स के साथ स्ट्रिंग इंटरपोलेशन नहीं करता है। यह केवल एक बार प्रस्तुत करेगा। प्रश्न स्पष्ट रूप से एक जावास्क्रिप्ट कार्रवाई प्रस्तुत करने के लिए देख रहा है। downvoted – TheJKFever

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