2012-07-02 8 views
5

शामिल नहीं हो सकता है, मैं इस tutorial का पालन कर रहा हूं और हालांकि इसे जेम फ़ाइल में जोड़ना और इसे इंस्टॉल करने के लिए बंडल ठीक काम करता है। पल मैं इसे application.js में शामिल करने के लिए प्रयास करें, फ़ाइल, मैं निम्नलिखित त्रुटि मिलती है, जबकि यह लोड हो रहा है:रेल में AngularJS

//= require angular 
//= require jquery 
//= require jquery_ujs 
//= require jquery.ui.autocomplete 
//= require bootstrap 
//= require pusher.min.js 
//= require pusher_setup 
//= require_directory . 
:

throw Error("Sprockets::FileNotFound: couldn't find file 'angular'\n (in /my/path/to/rails/app/assets/javascripts/application.js:13)") 

application.js फ़ाइल लग रहा है तो (लाइन 13 से शुरू) की तरह

इसलिए, मेरा सवाल यह है कि मैं अपने रेल परियोजना में कोणीयजेएस को सफलतापूर्वक कैसे शामिल कर सकता हूं?

मैं वर्तमान में रेल 3.2.2, और रूबी 1.9.3 का उपयोग कर रहा हूं।

उत्तर

5

मुझे एक ही समस्या का सामना करना पड़ा। मैंने इसे हल करके हल किया।

1) मेरे मामले में, //= require_tree .application.js फ़ाइल में अनुपलब्ध था .. इसलिए मैंने इसे जोड़ा है।

2) को पुन: प्रारंभ अपाचे सर्वर (webrick हैं, तो फिर उसे पुनरारंभ)

+0

बिल्कुल सही, धन्यवाद! – Hengjie

+0

मैं अभी भी जांच कर रहा हूं कि क्या हुआ, हालांकि, चीजों के दिखने के बाद, एक बार उस लाइन को एप्लिकेशन.जेएस में थोड़ी देर के लिए जोड़ा जाता है, इसे हटाया जा सकता है। यह अजीब लगता है, और मैं अभी भी जांच कर रहा हूं कि इसे बिना किसी आवश्यकता के काम करने की इजाजत दी गई है। – Hengjie

+1

requ_tree। परिणामस्वरूप आपके पास एक ही फ़ाइल (इस मामले में application.js) होगी जिसमें फ़ोल्डर में मौजूद आपकी सभी स्क्रिप्ट होंगी। – GBD

5

एक रत्न आप हमेशा वेब सर्वर पुनः आरंभ करना जोड़ने के बाद।

मणि के स्रोत कोड को देखने से, इसमें vendor/assets/javascripts में कोणीय जावास्क्रिप्ट हैं, जिसका अर्थ है कि वे केवल //= require angular कर सकते हैं। अगर वे लोड नहीं होते हैं, तो संभवतः सर्वर को पुनरारंभ करने की आवश्यकता है और आपको इंस्टॉल को बंडल करने की आवश्यकता है।

require_tree . के लिए, मैं दृढ़ता से इसके खिलाफ सलाह देता हूं, क्योंकि इसका मतलब है कि आप उस क्रम पर नियंत्रण खो देंगे जिसमें चीजें लोड हो जाती हैं।

उदाहरण के लिए कोणीय स्वयं को jQuery (jQuery-lite) के अपने संस्करण के साथ पैक किया गया है, लेकिन अगर लोड होने पर पहले से ही jQuery मौजूद है, तो यह वैश्विक संस्करण का उपयोग करेगा।

जिसका मतलब है

//= reqiure angular 
//= require jquery 

कर कुछ अलग करना होगा, की तुलना में

//= require jquery 
//= require angular 

कई अन्य मामलों जब लोड क्रम महत्व कर सकते हैं, उदाहरण के लिए यदि आप Backbone.js और अंडरस्कोर है कर रहे हैं, तो आप ,, रीढ़ से पहले अंडरस्कोर लोड करने के लिए आदि

एक सामान्य अभ्यास मैं हमेशा बस require का उपयोग करना चाहिये होगी चाहते हैं जब तक आप लोड कर रहे हैं अपने अपने कोड जहां ऑर्डर कोई फर्क नहीं पड़ता, उदाहरण के लिए //= require_tree ./controllers नियंत्रकों की अपनी निर्देशिका के लिए। उस मामले में मैं कहूंगा कि require_tree बिल्कुल ठीक है।

+0

यह अजीब है क्योंकि एक छिपी हुई फाइल के अलावा विक्रेता/संपत्ति/जावास्क्रिप्ट में कुछ भी नहीं है। क्या यह जेम फ़ाइल में जोड़ने के बाद सामान्य होना है, स्थापित बंडल, और फोरमैन को पुनरारंभ करना? – Hengjie

+0

@ हेंगी यह आपके रेल आवेदन में सीधे कॉपी नहीं करेगा। मणि के पास फाइल के साथ 'विक्रेता/संपत्ति/जावास्क्रिप्ट' निर्देशिका है। –

2

यदि किसी के पास एक ही समस्या थी और प्रस्तावित समाधान काम नहीं करेगा। मैं संपत्ति

group :assets do 
//= require angular 
end 

हालांकि अभी भी मैं एक ही त्रुटि हो रही थी में //= require angular जोड़ लिया है। थोड़ी सी खोज के बाद मुझे पता चला कि किसी कारण से संपत्ति समूह के बाहर जोड़ा गया है। सब ठीक है यकीन नहीं है कि यह एक बेहतरीन तरीका है हालांकि मुझे अब यह त्रुटि नहीं मिल रही है।

4
अपने gemfile में

आप इस तरह उपयोग कर रहे हैं:

group :assets do 
    gem 'angularjs-rails' 
end 

तो उस समूह को निकाल:

पूर्व:

gem 'angularjs-rails' 

यह संपत्ति बात है, यह ब्लॉक के बिना सरल होना चाहिए निश्चित रूप से काम करेगा

+1

लेकिन यह संपत्ति समूह में क्यों काम नहीं करता है? – kiddorails

+0

रेल में 4 संस्करण, मई में इस मणि के लिए संपत्ति के साथ कुछ संघर्ष हो सकता है, जांच करने की आवश्यकता है –