2011-12-09 9 views
6

मैं यह काम करने की कोशिश कर रहा हूं लेकिन यह मुझे पागल कर रहा है। मैं पहले से ही मेंमेरे वैध संपत्ति मार्ग में विक्रेता/संपत्ति/जावास्क्रिप्ट जोड़ें

application.rb इस सेट

config.assets.paths << Rails.root.join("vendor", "assets", "javascripts").to_s 

(.to_s क्योंकि यह एक ऑब्जेक्ट जबकि मैं यहाँ में एक स्ट्रिंग चाहते हैं)। मुझे समाधान नहीं मिल रहा है और मुझे पागल कर रहा है, क्योंकि विक्रेता में स्टाइलशीट निर्देशिका काम करती है, लेकिन जावास्क्रिप्ट नहीं है।

मैं यह कैसे कर सकता हूं?

त्रुटि दिखाई:

<h1>Routing Error</h1> 
<p><pre>No route matches [GET] &quot;/assets/ext-all-debug.js&quot;</pre></p> 

उत्तर

5

मेरा मानना ​​है कि विक्रेता पहले से ही अपनी संपत्ति की राह में शामिल किया गया है, रेल सांत्वना

rails console 
Rails.application.config.assets.paths.each do |path|; puts path; end 

हालांकि सबसे आसान काम एप्लिकेशन/आस्तियों/javascripts/lib में इस

  • डाल ext हो सकता है का उपयोग कर जाँच
  • require_tree यह पहले से ही लोड या स्पष्ट

एप्लिकेशन हो जाएगा lication।js

//= require ./lib/ext-all-debug.js 

तुम सच में यह विक्रेता

  • बनाने dir विक्रेता/आस्तियों/javascripts/ext
  • बनाने मैनिफ़ेस्ट फ़ाइल विक्रेता/आस्तियों/javascripts/ext में चाहते हैं/index.js
  • विक्रेता में ext-सब-debug.js डाल/आस्तियों/javascripts/ext/

index.js

के लिए कोड application.js

//= require ext 

dir कि सूचकांक मैनिफ़ेस्ट फ़ाइल स्थित है

अपने रेल सर्वर

पुन: प्रारंभ करें अगर आप नहीं चाहते

का नाम है कि के लिए

//= require ./ext-all-debug.js 

कोड application.js के माध्यम से extjs को लोड करने के लिए, यानी आप केवल विशिष्ट पृष्ठों पर extjs lib को शामिल करना चाहते हैं

<%= javascript_include_tag "ext" %> 
0

यह जानकारी के रूप में मुझे लगता है कि समस्या कहीं और है आपके द्वारा दिए गए से समस्या को देखने के लिए आसान नहीं है।

संपत्ति पाइपलाइन का शुद्धीकरण सभी जावास्क्रिप्ट को एक फ़ाइल में रखना है। और वह फ़ाइल HTML दस्तावेज़ में शामिल है। तो कुंजी यह है कि एक बड़ी जेएस फ़ाइल। खैर, यह अधिक जटिल हो सकता है लेकिन मुझे लगता है कि यह आपके मामले में जरूरी नहीं है।

तो अपने लेआउट ERB (आमतौर पर app/views/layout/application.erb) में उदाहरण के लिए:

<head> 
    ... 
    <%= javascript_include_tag "application" %> 
</head> 

और app/assets/javascripts/application.js में:

//= require ext_all_debug 
//= ... 

जब HTML पृष्ठ का अनुरोध किया जाता है, यह "application.js" और उसके द्वारा मांगी इस तरह से उत्पन्न होता है कि आपका विक्रेता जेएस कोड इस फ़ाइल में एम्बेड किया गया है (ध्यान दें कि उस आवश्यकता में कोई रास्ता नहीं है)।

और एक आखिरी बात - उत्पादन वातावरण में व्यवहार का परीक्षण करना काफी महत्वपूर्ण है क्योंकि आमतौर पर जेनरेट की गई जेएस फाइलें nginx/apache द्वारा की जाती हैं। rake assets:precompile एक अच्छी शुरुआत है।

1

आप जोड़ सकते हैं:

//= require_tree ../../../vendor/assets/javascripts 

अपने application.js फाइल करने के लिए।

1

अद्यतन

ऐसा लगता है कि समस्या तथ्य EXT यह खुद संरचना पथ संबंधित पथ के साथ निर्माण है है से जुड़ा है पढ़ें।

मैंने पूरी एक्स निर्देशिका निर्देशिका को संरक्षित करके समस्या को हल किया है (छवियों को कहीं भी विभाजित किए बिना) और मैंने इसे एक विक्रेता/बाहरी निर्देशिका (मेरे द्वारा बनाई गई) में जोड़ा।

: // = आवश्यकता EXT-सब-debug.js

अद्यतन 23/12/2013 के साथ इसे का हवाला

config.assets.paths << Rails.root.join("vendor", "assets", "externals").to_s 

और अब सब कुछ ठीक काम कर रहा है: मैं तो साथ पथ जोड़ा

रेल 3 के रूप में, ध्यान दें कि यह निर्देशिका डिफ़ॉल्ट रूप से जोड़ दी गई है।