16

ठीक है, इसलिए मैंने इस समस्या के बारे में jQuery या प्रोटोटाइप के कई लिंकिंग के कारण this question देखा है, लेकिन मैं पुष्टि कर सकता हूं कि मैं केवल पूरे पृष्ठ पर jQuery से jQuery से लिंक कर रहा हूं। मेरी समस्या यह है: जब मेरे पास link_to है जो एक विलोपन की पुष्टि करता है, तो पॉपअप दो बार दिखाता है। यहाँ मेरी टेम्पलेट में लागू कोड (स्लिम में लिखा) है:एसेट पाइपलाइन के साथ रेल 3.1, link_to: दो बार दिखाए गए संदेश की पुष्टि करें?

link_to('Destroy', depot_path(@depot.id), :confirm => "Really?", :method => :delete) 

मैं चल रहा हूँ रेल 3.1.0 एसेट पाइपलाइन के साथ मेरी Gemfile में चालू, gem 'jquery-rails' साथ, और निम्न मेरी application.js में है फ़ाइल (जिसे संपत्ति पाइपलाइन के लिए स्प्राकेट्स द्वारा संकलित किया गया है)।

//= require jquery 
//= require jquery_ujs 
//= require 'underscore' 
//= require 'backbone' 

मैं underscore.js और मेरे /vendor/assets/javascripts/ निर्देशिका में backbone.js है, और sprockets उन ठीक लगता है लगता है। मैंने application.js फ़ाइल के माध्यम से भी खोज की है जो स्पॉकेट्स परोसता है, और jQuery केवल एक बार में है, और jQuery यूजेएस केवल एक बार में है। जब मेरा पृष्ठ प्रस्तुत करता है तो मेरा सिर ऐसा लगता है (मैंने प्रदर्शन के लिए csrf-token मान को छोड़ दिया है, FWIW)।

<head> 
    <meta content="text/html; charset=utf-8" http-equiv="content-type"> 
    <title>Administration</title> 
    <link href="/assets/screen.css" media="screen" rel="stylesheet" type="text/css" /> 
    <script src="/assets/application.js" type="text/javascript"></script> 
    <meta content="authenticity_token" name="csrf-param" /> 
    <meta content="--token--omitted--" name="csrf-token" /> 
    <script src="/assets/common/subdata.js" type="text/javascript"></script> 
    <link href="/assets/show.css" media="screen" rel="stylesheet" type="text/css" /> 
</head> 

subdata.js इसमें कुछ बैकबोन-विशिष्ट कोड है; कुछ भी नहीं जो jQuery को फिर से शामिल करना चुनता है। तो सौदा क्या है? मेरे पास मेरी परियोजना में कहीं भी एक अतिरिक्त jQuery फ़ाइल नहीं है; यह सब jquery-rails मणि के माध्यम से प्रबंधित किया जाता है। क्या मेरी :confirm विधि दो बार आग लग रही है?

EDIT: मैं इसे पहले रेल 3.1 के आरसी 5 पर देख रहा था, लेकिन अब मैं इसे रेल 3.1 वास्तविक पर भी देख रहा हूं।

उत्तर

25

यह मेरे साथ हुआ है क्योंकि मैंने अपने विकास पर्यावरण में public/assets/application.js बनाने के कारण rake assets:precompile चलाया था। यह /assets/application.js के लिए इस स्थिर फ़ाइल द्वारा सेवा के लिए अनुरोध करता है जिसमें सभी // require स्क्रिप्ट्स public/assets/application.js में संकलित होती हैं, जिससे उन्हें एक बार फिर से लोड किया जा सकता है।

विकास मोड <%= javascript_include_tag "application" %> में कई करने के लिए <script> टैग, // require लाइनों के लिए आवश्यक प्रत्येक फ़ाइल के लिए एक, और भी application.js जो केवल अपने स्वयं के सामग्री होती है के लिए एक में विस्तार होगा।

समाधान पूरे public/assets निर्देशिका मैन्युअल रूप से निकालना है या assets:clean रेक कार्य का उपयोग करना है। यह स्क्रिप्ट फ़ाइलों को गतिशील रूप से फिर से सेवा प्रदान करेगा।

+1

मैं रेल 3.0 का उपयोग कर रहा हूं। 10 और यह jquery-rails मणि स्थापित करने और इसके जेनरेटर चलाने के बाद मेरे साथ हुआ। Rails.js को हटाया नहीं गया था, और उस निश्चित खान को हटा रहा था। – PhillipKregg

+1

यह लगभग समय है जब मैंने इसे एक उत्तर के रूप में स्वीकार किया - यह मेरे लिए सबसे अच्छा काम करता है। यह भी ध्यान रखें कि 'बंडल निष्पादन रेक संपत्तियां' चलाना 'स्वच्छ' 'सार्वजनिक/संपत्ति 'निर्देशिका को हटाने के लिए काम करेगा। इनमें से अधिकतर इसलिए था क्योंकि मैंने अभी तक काफी कुछ नहीं लिखा है और कम से कम घर्षण-तरीके में अपनी स्टाइलशीट को स्टोर नहीं किया है एसेट पाइपलाइन आपको चाहता है। मुझे अलग होने की कोशिश करने के लिए यही मिलता है, मुझे लगता है ... –

+0

धन्यवाद। 'संपत्ति: स्वच्छ' के बारे में नहीं पता था, जानना अच्छा है। करने के लिए सीम [एक ही चीज़ कम या ज्यादा] (https://github.com/rails/rails/blob/master/actionpack/lib/sprockets/assets.rake#L83) लेकिन अधिक सटीक सीम। –

-1

शायद आपके पास rails.js फ़ाइल है। इसे हटाएं और इसे फिर से प्रयास करें। यह काम करना चाहिए।

एफओएन

+0

मेरे पास मेरी परियोजना में कहीं भी 'rails.js' फ़ाइल नहीं है; 'ऐप/संपत्ति/जावास्क्रिप्ट' में नहीं, 'सार्वजनिक/जावास्क्रिप्ट' में नहीं, कहीं भी नहीं। किसी भी 'rails.js' फ़ाइल के लिए कोई संदर्भ या टूटी हुई लिंक भी नहीं है। –

4

यह मेरे साथ भी हो रहा था। "// = requ_tree" को हटा रहा है। application.js से इसे ठीक किया गया।

+0

यह मेरे लिए काम नहीं किया गया है = ( – Tony

+0

यह आपके कारण हो सकता है क्योंकि आप एक ही फ़ाइल को मैन्युअल रूप से ** javascript_include_tag ** और अन्य द्वारा application.js द्वारा मैन्युअल रूप से दो बार शामिल कर सकते हैं। पहले पुष्टि करें कि यदि ऐसा है तो आपको यह करना होगा इसे एक बार शामिल करें। –

0

एप्लिकेशन.जेएस में संस्करण के साथ jquery और jquery_ujs का नाम बताएं यदि अभी भी कसरत नहीं है तो jquery और jquery_ujs का संपीड़ित संस्करण लें।

या

अपने gemfile में मणि 'jQuery-रेल' जोड़ें तो बाहर का प्रयास करें।

+0

'jquery-rails' मणि पहले से ही मेरे Gemfile में था (जैसा कि मेरे प्रश्न में बताया गया है)। 'jquery' और 'jquery_ujs' को हटाकर सभी रेल/jQuery दृश्य व्यवहार को पूरी तरह से हटा दिया गया है। –

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