2012-06-20 26 views
34

मैं एक AJAX- आधारित टिप्पणी फ़ॉर्म बनाने की कोशिश कर रहा हूं जो सबमिट होने पर मेरी टिप्पणियों की सूची अपडेट करेगा। सुंदर मूल सामान।js.erb फ़ाइल में आंशिक रेंडरिंग

$('#comments ul.comments').append("<%= render :partial => 'comments/single', :locals => { :c => @comment } %>"); 
$('#comments ul.comments').append("<%= render :partial => 'comments/foobar' %>"); 
$('#comments ul.comments').append("foobar"); 
alert('foobar'); 
:

मैं एक आंशिक comments/_single.html.haml जो बुनियादी टिप्पणी की जानकारी के साथ एक एकल <li> टैग है और यहाँ है मेरी comments/create.js.erb फ़ाइल (वास्तव में इन कर रहे हैं तीन अलग-अलग परीक्षण फ़ाइलें आप यह जान सकें कि मेरी समस्या है एक में मिला दिया है)

comments/_foobar.html.haml के लिए सामग्री foobar है, कोई HTML अंदर नहीं है। मेरी समस्या यह है कि पहली दो पंक्तियां काम नहीं करती हैं। मेरे देव सर्वर कंसोल में कोई त्रुटि नहीं है, ऑब्जेक्ट इंस्पेक्टर का कहना है कि टिप्पणी कोड सही ढंग से वापस कर दिया गया था लेकिन वे मेरी टिप्पणियों की सूची में नहीं जोड़े गए हैं। तीसरी पंक्ति ठीक काम करती है और चौथा एक। ऐसा लगता है कि render का उपयोग करने में कुछ समस्याएं हैं।

उत्तर

90

जब जावास्क्रिप्ट कोड के अंदर आंशिक प्रतिपादन, आप escape_javascript विधि, इसलिए

$('#comments ul.comments').append("<%= escape_javascript render(:partial => 'comments/single', :locals => { :c => @comment }) %>"); 

इस विधि जे के रूप में एलियास है की तरह इस्तेमाल करना चाहिए, ताकि आप भी इस

$('#comments ul.comments').append("<%= j render(:partial => 'comments/foobar') %>"); 

कर सकते हैं विधि कैरिज रिटर्न से बचती है और जावास्क्रिप्ट सेगमेंट के लिए सिंगल और डबल कोट्स ActionView::Helpers::JavaScriptHelper Rails docs

+1

धन्यवाद! लोग, escape_javacript विधि को मत भूलना। – Abel

+0

सरलीकृत संस्करण में स्थानीय चर के साथ क्या हुआ – bobbdelsol

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