2013-02-23 32 views
5

मेरा एक परियोजना, कोड में:क्यों मैं "डेटा: {प्रकार:" जोड़ने की जरूरत स्क्रिप्ट "}" के साथ रेल/ajax दूरस्थ लिंक पर

= link_to "add", new_me_category_path, class: "btn btn-success", remote: true 

दूरदराज के रूप में सही ढंग से लोड कर सकते हैं।

लेकिन कोई भी काम नहीं कर सकता, ब्राउज़र ने responese js कोड निष्पादित नहीं किया। मुझे "डेटा: {टाइप:" स्क्रिप्ट "}" जोड़ने की जरूरत है:

= link_to "add", new_me_category_path, class: "btn btn-success", remote: true, data: {type: "script"} 

मैं कारण जानना चाहता हूं।

+0

क्या आप थोड़ा और कोड जोड़ सकते हैं? – Kamil

उत्तर

4

इम जे एस नहीं विशेषज्ञ, और मुझे पता रूबी नहीं है, लेकिन मुझे लगता है कि:

डेटाप्रकार script पर सेट होने पर - डाउनलोड किया कोड लोड और तुरंत निष्पादित किया जाता है।

जब डेटाटाइप डिफ़ॉल्ट है (html) - डाउनलोड कोड बस ब्राउज़र में लोड किया गया है। आपको इसे "मैन्युअल रूप से" निष्पादित करना होगा (उदाहरण के लिए कुछ फ़ंक्शन कॉल करके)।

यदि आपके कोड में पहले से लोड किए गए कोड के साथ उपयोग के लिए कुछ फ़ंक्शन हैं - ये फ़ंक्शन उपलब्ध होंगे और काम करेंगे (जब डेटा प्रकार html है)।

यदि आपके कोड में परिभाषित घटनाएं हैं - वे काम नहीं करेंगे क्योंकि उन्हें प्रारंभ नहीं किया गया है, क्योंकि कोड निष्पादित नहीं किया गया था।

यदि मेरी व्याख्या खराब है - तो आप jQuery.get() और jQuery.getScript() विधियों के बीच अंतर के बारे में पढ़ सकते हैं।

1

यदि आप स्क्रिप्ट सही टेम्पलेट लोड करते हैं तो .ejs एक्सटेंशन होना चाहिए (या इस तरह कच्ची स्क्रिप्ट प्रस्तुत करें: render js: 'some code')। आप इस तरह EJS टेम्पलेट में j का उपयोग कर एचटीएमएल पलायन करना होगा:

template.ejs

$('some selector').html('<%= j render('some template') %>'); 

मुझे भी यूआरएल दे। सही .js के साथ समाप्त होना चाहिए।

2

पर्दे के पीछे, jQuery के ajax विधि का इस्तेमाल किया जाता है: http://api.jquery.com/jquery.ajax/ uJS https://github.com/rails/jquery-ujs जब भी लिंक के data-remote="true" विशेषता सेट कर दिया जाता है, जो remote: true द्वारा किया जाता है द्वारा।

के रूप में दस्तावेज में कहा गया है, अजाक्स HTTP हेडर भेजा स्वीकार करता है निर्धारित करता है और dataType और accepts तर्क ajax() को पारित कर दिया है, जो यहाँ uJS द्वारा लंगर की data- विशेषताओं से लिया जाता है के आधार पर दिया गया मान व्याख्या करता है।

यदि data-type विशेषता के माध्यम से सेट किया गया है, तो jQuery अनुरोध अनुरोध और प्रतिक्रिया प्रकार "समझदारी से"। यदि आप इसे स्पष्ट रूप से निर्दिष्ट नहीं करते हैं तो यह विसंगतियों को समझा सकता है।