8

मैं seyhunak's gem का उपयोग कर ट्विटर बूटस्ट्रैप के साथ एक 3.1 रेल ऐप विकसित कर रहा हूं।जावास्क्रिप्ट - ट्विटर बूटस्ट्रैप jquery plugins उत्पादन के लिए संकलित नहीं

group :assets do 
    gem 'sass-rails', '~> 3.1.5' 
    gem 'coffee-rails', '~> 3.1.1' 
    gem 'uglifier', '>= 1.0.3' 
    gem "twitter-bootstrap-rails" 
end 

और application.js फ़ाइल:

RAILS_ENV=production bundle exec rake assets:precompile 

मणि फ़ाइल का उपयोग करना:

उत्पादन मोड पर, मैं पाइप लाइन के माध्यम से precompilation बुनियादी बूटस्ट्रैप सीएसएस और जे एस का उपयोग करने में सक्षम था

//= require_tree . 

//= require jquery 
//= require jquery_ujs 
//= require twitter/bootstrap 
//= require bootstrap-tab 
//= require bootstrap-modal 
//= require bootstrap-dropdown 
//= require bootstrap-popover 

एप्लिकेशन बूटस्ट्रैप प्लगइन्स जैसे मो के अलावा ठीक काम करता है दाल और ड्रॉपडाउन।

/vendor/assets/javascripts/bootstrap-dropdown.js 
... 

मैं या यकीन नहीं है कि इन फ़ाइलों precompiled किया जा रहा है नहीं कर रहा हूँ नहीं, मैं कैसे ऐसा करने के लिए प्रबंधन कर सकते हैं: इन प्लग इन के रूप स्थिर जावास्क्रिप्ट लाइब्रेरियों विक्रेता संपत्ति निर्देशिका के अंदर मौजूदा मौजूद हैं?

उत्तर

8

इसे मिला!

यह बूटस्ट्रैप की समस्या नहीं थी, बल्कि उचित रूप से पूर्ववर्ती jQuery के साथ। व्यक्तिगत प्लगइन के लिए जावास्क्रिप्ट फ़ाइलों को शामिल करने की आवश्यकता नहीं है। वे पहले से ही मुख्य ट्विटर/बूटस्ट्रैप में शामिल हैं।

समस्या इस प्रकार फिर से व्यवस्था करने javascripts फ़ाइलों द्वारा हल किया गया था:

application.js

//= require jquery 
//= require jquery_ujs 
//= require twitter/bootstrap 

Gemfile

group :assets do 
    gem 'sass-rails', '~> 3.1.5' 
    gem 'coffee-rails', '~> 3.1.1' 
    gem 'uglifier', '>= 1.0.3' 
    gem "twitter-bootstrap-rails" 
end 

gem 'jquery-rails', '>= 1.0.12' 

संपत्ति Precompling और काम किया!

+0

यह वास्तव में मेरे लिए काम करने वाला समाधान नहीं था, लेकिन यह मुझे सही दिशा में चला गया। धन्यवाद – Arcolye

+1

@ अरोक्ले - कृपया मुझे बताएं कि आपने कैसे किया ... – Philip

1

अपने /vendor/assets/javascripts जगह निम्नलिखित सामग्री के साथ एक फ़ाइल vendor_js.js में:

//= require_tree . 
अब में अपने /app/assets/javascripts/application.js एक लाइन

//= require vendor_js 

आप केवल करने के लिए vendor_js.js अनुकूलित कर सकते हैं शामिल हैं

विशिष्ट विक्रेता के लिए प्लगइन शामिल उदाहरण के लिए विक्रेता जावास्क्रिप्ट निर्देशिका के भीतर केवल बूटस्ट्रैप ड्रॉपडाउन को शामिल करने के लिए //= require bootstrap-dropdown का उपयोग करके।

अद्यतन टिप्पणियाँ

प्रतिबिंबित करने के लिए जब से तुम विक्रेता/javascripts में बूटस्ट्रैप जे एस फ़ाइलें डाल मैन्युअल, कृपया अपनी application.js से सभी बूटस्ट्रैप से संबंधित require रों हटाने और जैसा कि ऊपर उल्लेख उन्हें vendor_js.js में पेस्ट करें। सुनिश्चित करें कि आपको सही रास्ता मिल गया है (यदि आप फ़ाइलों को उपनिर्देशिका में डालते हैं)। यह भी सुनिश्चित करें कि प्रत्येक फ़ाइल को अलग से शामिल करना और पॉपओवर से पहले टूलटिप को शामिल करना सुनिश्चित करें, क्योंकि पॉपओवर टूलटिप पर पहले लोड होने पर निर्भर करता है।

+0

मैंने इस तरह से प्रयास किया और यह विकास मोड में काम किया, संपत्तियों को फिर से तैयार किया और प्लगइन्स और अन्य सामान अभी भी उत्पादन मोड में काम नहीं कर रहे हैं :( –

+1

क्या आप जांच सकते हैं कि संपत्ति सही तरीके से प्रीकंपल की गई है यानी फ़ाइल हैश संलग्न है फ़ाइल नाम के लिए? सिद्धांत रूप में, उन्हें चाहिए।यदि वे हैं, तो यह एक और समस्या हो सकती है, उदा। नेमस्पेस संघर्ष आदि। मैंने ट्विटर-बूटस्ट्रैप-रेल का उपयोग नहीं किया - लेकिन क्या आप सुनिश्चित हैं कि मणि "संपत्ति" समूह में जाता है? साथ ही, विक्रेता विक्रेता में 2 विशिष्ट प्लगइन्स कैसे प्राप्त हुए, जबकि अन्य किसी अन्य निर्देशिका में स्थित प्रतीत होते हैं? – emrass

+0

ऐसा लगता है कि प्लगइन कोड precompiled application.js के अंदर मौजूद है, लेकिन किसी कारण से ब्राउज़र इसे पहचान नहीं रहा है। –

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