दिलचस्प पोस्ट
विशिष्ट ग्रहण बिल्ड कॉन्फ़िगरेशन के लिए एक कीबोर्ड शॉर्टकट असाइन करना विशिष्ट पथ (फ़ोल्डर) पर ट्रिगर मेडीस्कैनर, कैसे करें? जीसी को कब कॉल करना स्वीकार्य है? संकलक? है । में .रेड द्वारा परिभाषित जब आवश्यक रेंज। regex के साथ jQuery के यूट्यूब यूआरएल सत्यापन Tomcat6 में एक परिनियोजन आदेश को लागू करने का कोई तरीका है? मुझे जावा में पर्ल स्क्रिप्ट को कैसे कॉल करना चाहिए? एरलांग में ट्रेस और डीबीजी का उपयोग करना Google Alerts API? डेटा टाइमटाइम्स के भीतर डेटा सबसेट समय फ़्रेम लौटें? रिमोट रिपॉज़िटरी में परिवर्तनों को धक्का करते समय यह Git चेतावनी संदेश क्या है? शेल में कार्यक्रम निष्पादन समय प्राप्त करें जब संदर्भ (एल मूल्य और आर-मान) पास-बाय-वैल्यू को पसंद किया जाता है तो पास से ओवरलोड हो रहा है? एनीमेशन और संक्रमण का संयोजन ठीक से काम नहीं कर रहा है सूची <टी> या आईआईएलआईटी <टी>

रेल 4 टर्बो-लिंक जेपीसी स्क्रिप्ट को काम से रोकता है

मैं एक रेल 4 एप का निर्माण कर रहा हूं और मेरे पास कुछ बिखरे हुए जेएस फाइल हैं जिन्हें मैं "रेल मार्ग" को शामिल करने की कोशिश कर रहा हूं। मैं jquery plugins को / विक्रेता / संपत्तियों / जावास्क्रिप्टों में स्थानांतरित कर दिया और मैंने उन्हें प्रकट करने के लिए मैनिफेस्ट (application.js) को अपडेट किया। जब मैं पृष्ठों को स्थानीय रूप से लोड करता हूं, तो मुझे लगता है कि वे सही तरीके से दिखाई देते हैं।

हालांकि, मुझे संकलित किए गए एक स्क्रिप्ट से असंगत व्यवहार हो रहा है। मेरे पास एक नियंत्रक-विशिष्ट जेएस फ़ाइल है जिसे projects.js कहा जाता है जो application_j का इस्तेमाल करके require_tree . संदर्भ में है require_tree . :

 //= require jquery //= require jquery_ujs //= require turbolinks //= require bootstrap.min //= require jquery.form.min //= require_tree . 

मुझे लगता है कि फ़ाइल ठीक से शामिल है, और यह काम करता है … आधा समय समय के अन्य आधे, projects.js में सामान कुछ भी नहीं लगता (यह ज्यादातर jquery एनिमेशन और कुछ अजाक्स अनुरोध)। जब यह काम नहीं करता, मैं दो बार बटन क्लिक करता हूँ, कुछ नहीं होगा, और फिर मैं यह त्रुटि फेंकता हूँ:

 Uncaught TypeError: Cannot read property 'position' of null turbolinks.js?body=1:75 

यह तब कभी नहीं हुआ जब स्क्रिप्ट व्यक्ति के विचारों (गलत तरीके से) में थी, इसलिए मैं निश्चित रूप से यह निश्चित हूं कि समस्या मेरे जावास्क्रिप्ट कोड के साथ नहीं है। एक अन्य संभावित रूप से प्रासंगिक विवरण यह है कि projects.js में सामान $(document).ready(function(){ में लपेटा हुआ है $(document).ready(function(){ । इसके अलावा, मैं विकास मोड में परीक्षण कर रहा हूं ताकि जावास्क्रिप्ट और सीएसएस को परिसंपत्ति पाइपलाइन ।

कोई भी विचार यहाँ क्या हो रहा है? मैं रेल के लिए नया हूँ, लेकिन मैंने सभी सम्मेलनों का पालन करने के लिए अपना सर्वश्रेष्ठ किया है

अद्यतन करें!

मेरी परियोजना स्क्रिप्ट काम नहीं करते जब यह अनुमान लगाया जा सकता है पहला पृष्ठ लोड हर बार काम करता है तब मैं एक नया पृष्ठ पर एक लिंक क्लिक करता हूं जो मेरे project.js व्यवहार का उपयोग करता है और दूसरा पेज कभी काम नहीं करता। मैं कुछ बार क्लिक करता हूं और आखिर में त्रुटि को फेंक देता हूं। मुझे अभी भी यकीन नहीं है कि क्यों, लेकिन मुझे संदेह है कि यह टर्बो-लिंकिंग से संबंधित है।

Solutions Collecting From Web of "रेल 4 टर्बो-लिंक जेपीसी स्क्रिप्ट को काम से रोकता है"

$(document).ready(function(){ वास्तव में टर्बोलाइंक्स के साथ काम नहीं करता है। टर्बोलाइंक्स :

… आपके वेब अनुप्रयोग में त्वरित लिंक को तेज़ बनाता है ब्राउजर को प्रत्येक पृष्ठ में बदलाव के बीच जावास्क्रिप्ट और सीकॉम को पुनः कंपाइल करने की बजाए, यह मौजूदा पेज इंस्टेंस को जिंदा रखता है और केवल शरीर और सिर में शीर्षक को बदल देता है।

इसलिए पृष्ठ केवल एक बार लोड होता है और फिर आवश्यकतानुसार टुकड़ों को बदल दिया जाता है। चूंकि पृष्ठ केवल एक बार भरी हुई है, आपका $(document).ready() कॉलबैक केवल तब शुरू हो रहे हैं जब साइट को शुरू में विज़िट किया गया है, आप पृष्ठों को स्विच करते समय अधिक दस्तावेज़-तैयार ईवेंट प्राप्त नहीं करेंगे क्योंकि टर्बोलाइंक्स वास्तव में पृष्ठ नहीं स्विच करते हैं ठीक मैनुअल से :

Turbolinks पृष्ठों के साथ एक पूर्ण पुनः लोड किए बिना बदल जाएगा, इसलिए आप DOMContentLoaded या jQuery.ready() पर भरोसा नहीं कर सकते jQuery.ready() अपना कोड ट्रिगर करने के लिए इसके बजाय पृष्ठ के जीवनचक्र में हुक प्रदान करने के लिए दस्तावेज़ पर टर्बोलाइंस की घटनाएं आग लगती हैं।

आप शायद इसके बजाय टर्बोलाइंस ईवेंट में से एक के लिए सुनना चाहते हैं:

  • page:change पृष्ठ को पार्स किया गया है और नए संस्करण में और DOMContentLoaded पर बदल दिया गया है
  • […]
  • page:load लदान प्रक्रिया के अंत में page:load निकाल दिया जाता है।

page:change आमतौर पर आप की तलाश में होते हैं क्योंकि यह ताज़ा पृष्ठ लोड करते समय ट्रिगर होता है और टर्बोलाइंक पृष्ठ कैश से एक पृष्ठ को पुनर्स्थापित करता है।

आप तब तक टर्बोलाइन्स को बंद करना चाहें जब तक आपके पास अपने सभी जावास्क्रिप्ट की समीक्षा करने के लिए समय न हो और आपने पूरा क्यूए स्वीप कर लिया हो आपको अपनी साइट की गति का भी परीक्षण करना चाहिए ताकि यह देखने के लिए कि क्या यह बिल्कुल भी उपयोग करना उचित है।

एक अन्य विकल्प आपके लिए चीजें अप करने के लिए jquery.turbolinks का उपयोग करने के लिए होगा। मैंने इसका इस्तेमाल नहीं किया है लेकिन अन्य लोग इसका इस्तेमाल अच्छे प्रभाव के लिए कर रहे हैं।

इस का एक समाधान पहले से ही इस railscast पर उपलब्ध है

यहां एक उदाहरण है (मैं उपयोग करना चाहता हूं)।

 ready = -> # ..... your js $(document).ready(ready) $(document).on('page:load', ready) 

एक मणि भी है जो इस मुद्दे को ऐसे तरीके से हल करता है जिससे आप इसे पुराने तरीके से जारी रख सकें। यह वास्तव में अच्छी तरह से काम करता है 🙂

मुझे पता है कि यह उत्तर REAAAAAAALLLLLLLYYYYY देर है … लेकिन मुझे लगा कि मैं इसे जोड़ूंगा।

मुझे पिछले हफ्ते ही यह मुद्दा था … जबकि फाउंडेशन को काम करने की कोशिश करते हुए ..

पहले मैंने कहा:

 gem 'jquery-turbolinks' 

इसके बाद इसे application.js में रखा गया। जेएस की तरह:

 //= require jquery.turbolinks //= require jquery_ujs //= require turbolinks //= require_tree . 

और फिर मैंने इसे नीचे यह अधिकार जोड़ा:

 $(document).on('turbolinks:load', function() { }); 

और सब कुछ मेरे लिए काम किया उम्मीद है की यह मदद करेगा!