2011-07-03 11 views
50

मैं अपने रेल 3.1 एप में विक्रेता/संपत्ति/छवियों में कुछ बाहरी छवियों (एक jQuery प्लगइन द्वारा उपयोग) डालने की कोशिश कर रहा हूं।रेल 3.1 विक्रेता/संपत्ति/छवियों से छवियों की सेवा

No route matches [GET] "/assets/ui-bg_flat_75_ffffff_40x100.png" 

मैं अपने Rails.application.config.assets.paths की जाँच की और यह इन dirs सूची:

..../app/assets/images 
..../app/assets/javascripts 
..../app/assets/stylesheets 
..../vendor/assets/images 
..../vendor/assets/stylesheets 
..../.rvm/gems/[email protected]/gems/jquery-rails-1.0.9/vendor/assets/javascripts 

<%= image_tag "ui-bg_flat_75_ffffff_40x100.png" %> 

मैं एक त्रुटि मिलती है: समस्या यह है कि जब मैं की तरह कुछ की कोशिश है

जैसा कि आप देख सकते हैं/विक्रेता/संपत्ति/छवियां सूचीबद्ध हैं। अगर मैं अपनी छवि ऐप/संपत्ति/छवियों में डालता हूं तो सबकुछ काम करता है।

मैंने सोचा कि नई संपत्ति पाइपलाइन सभी संपत्ति डीआईआरएस के माध्यम से जाना चाहिए और जहां भी इसे मिलती है, अनुरोध फ़ाइल को सेवा प्रदान की जाती है।

क्या कोई जानता है कि यहां समस्या क्या है?

+0

क्षमा करें, आपकी समस्या की बिल्कुल मदद नहीं करते हैं, लेकिन आप Rails.application.config.assets.paths को कैसे देखते हैं? – Martin

+1

@ मार्टिन: आप इसे कंसोल –

+0

में देख सकते हैं यह एक बेवकूफ सवाल हो सकता है, लेकिन छवियों निर्देशिका में आपकी jqueryui संपत्तियां हैं? मेरा छवि निर्देशिका में है, और उसके बाद सीएसएस पथों को संरक्षित करने के लिए अपने स्वयं के उपनिर्देशिका में jqueryui की थीम निर्माता उत्पन्न करता है। – Slick23

उत्तर

80

मुझे vendor/assets/images निर्देशिका बनाने के बाद मेरे रेल सर्वर को पुनरारंभ करना पड़ा। इससे पहले, मैं आपको वही त्रुटि देख रहा था ("कोई रूट मैचों [GET]")।

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

+1

फिर से शुरू करने की चाल चल रही थी। धन्यवाद! –

+0

पॉव (और पाउडर मणि) का उपयोग करके मैंने अभी तक कोई भाग्य के साथ 'पाउडर रीस्टार्ट' की कोशिश की। तब मैंने 'पाउडर डाउन' और 'पाउडर अप' की कोशिश की और अंत में Rails.application.config.assets.paths में विक्रेता/संपत्ति/छवियां शामिल थीं। – Chris

+1

'पाउडर रीस्टार्ट' ने मेरे लिए चाल – Cristian

9

रयान बिग (इस समय ड्राफ्ट स्थिति) द्वारा इस रेल गाइड में संपत्ति पाइपलाइन का वर्णन किया गया है।

http://ryanbigg.com/guides/asset_pipeline.html और http://ryanbigg.com/2011/06/sprocket-asset-tags-internals/ संदर्भों के लिए।

इसके अनुसार, आपका उदाहरण काम करना चाहिए।

निकालें:

Assets can be placed inside an application in one of three locations: app/assets, lib/assets or vendor/assets.

app/assets is for assets that are owned by the application, such as custom images, javascript files or stylesheets.

lib/assets is for your own libraries’ code that doesn’t really fit into the scope of the application or those libraries which are shared across applications.

vendor/assets is for assets that are owned by outside entities, such as code for JavaScript plugins.

Any subdirectory that exists within these three locations will be added to the search path for Sprockets (visible by calling Rails.application.config.assets.paths in a console). When an asset is requested, these paths will be looked through to see if they contain an asset matching the name specified. Once an asset has been found, it’s processed by Sprockets and then served up.

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

मार्टिन के लिए: स्प्रेकेट्स के लिए खोज पथ एक कंसोल में Rails.application.config.assets.paths को कॉल करके दिखाई देता है।

+0

हाँ, मैंने इसे पढ़ लिया है। यही कारण है कि मुझे लगता है कि यह काम करना चाहिए। शायद यह एक बग है। –

+0

मेरे लिए यह काम करता है। क्या आपने अपनी संपत्ति का परीक्षण के रूप में नाम बदलने का प्रयास किया था? –

+0

यह मेरे सभी ऐप्स में एक आवर्ती समस्या है जो मैं रेल 3 – botbot

22

यदि आप एक jQuery UI थीम रोलर थीम का उपयोग कर रहे हैं तो समस्या यह हो सकती है कि jquery-ui css फ़ाइल में छवियों को उप फ़ोल्डर 'छवियों' के संदर्भ में संदर्भित किया जाता है।

आईई। आपको या तो अपनी छवियों को फ़ोल्डर './app/assets/images/images' में रखना होगा या आपको jquery-ui css फ़ाइल को संपादित करना होगा और 'छवियों' फ़ोल्डर उपसर्ग को हटाना होगा।

+8

यह कुछ हद तक भ्रमित है कि आप 'http://example.com/assets/images/darrowleft.gif 404 प्राप्त नहीं कर सकते हैं (नहीं मिला) 'जावास्क्रिप्ट कंसोल में और आपके पास उस विक्रेता को' विक्रेता/संपत्ति/छवियों 'में है। हालांकि, आपको URL के लिए * http: // example.com/assets/darrowleft.gif' देखना चाहिए। 'Http: // example.com/assets/images/darrowleft.gif' देखने के लिए आपको उस विक्रेता को 'विक्रेता/संपत्ति/छवियों/छवियों' में @woelfle समझाया गया है। ऐसा करने से आपको विक्रेता सीएसएस फ़ाइलों में पथ संशोधित करने की परेशानी होगी। –

+0

छवियों को नामित एक और फ़ोल्डर में छवियों को अजीब लग रहा है, लेकिन रेल 3.1.3 पर मेरे लिए काम किया। धन्यवाद! – counterbeing

+0

धन्यवाद, जॉर्ज, वह मेरे लिए पहेली का गुम टुकड़ा था! – Sprachprofi

2

शायद आपको/संपत्ति/छवियों में एक और फ़ोल्डर बनाना चाहिए। आप एक नाम 'छवियां' बनाते हैं और फिर आप बस jquery-ui छवि की प्रतिलिपि बनाते हैं और आपके द्वारा पहले बनाए गए फ़ोल्डर 'छवियों' पर पेस्ट करते हैं। उम्मीद है कि यह आपकी मदद करेगा।

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