2013-04-05 5 views
10

मेरी index.html.erb कोड -क्यों छवियों मेरी रेल में नहीं दिख रहे हैं बुनियादी एप्लिकेशन

<h1>Listing products</h1> 

<table border="1"> 

<% @products.each do |product| %> 
    <tr> 
    <td><%= product.title %></td> 
    <td><%= product.description %></td> 
    <td><%= image_tag(product.image_url, :class => 'list_image') %></td> 
    <td><%= product.price %></td> 
    <td><%= link_to 'Show', product %></td> 
    <td><%= link_to 'Edit', edit_product_path(product) %></td> 
    <td><%= link_to 'Destroy', product, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
    </tr> 
<% end %> 
</table> 

<br /> 

<%= link_to 'New Product', new_product_path %> 

और छवियों app\assets\images ..लेकिन अभी भी छवियों सामने के छोर पर दिखाई नहीं दे रहे तहत कर रहे हैं।

जब मैं Firebug करता हूं, मुझे विश्वास है कि छवि टैग सही ढंग से बना रहा है ... मुझे बताएं कि मैं इस भाग में क्या खो रहा हूं।

<img src="/images/product1.jpg" class="list_image" alt="Product1"> 

स्क्रीनशॉट -

screenshot

छवियाँ के साथ-साथ अपने स्थान पर हैं -

image placeholder

मुझे पता है मैं गलत क्या कर रहा हूँ चलो और मैं इसे कैसे ठीक करूं ।

संपादित

github.com/swapnesh/depot

मुझे पता है क्यों यह मेरे मामले में काम नहीं कर रहा है।

हालांकि /images/product1.jpg/assets/product1.jpg बदलकर यह काम करता है।

+0

क्या आप पेपरक्लिप या कैरियरवेव का उपयोग कर रहे हैं? – Kashiftufail

+0

क्या आप 100% सुनिश्चित हैं कि फ़ाइल **/ऐप/संपत्ति/छवियां/product1.jpg ** मौजूद है? मुझे यकीन नहीं है लेकिन फ़ाइल मौजूद नहीं हो सकती है और फिर सहायक **/images/product1.jpg ** के बजाय पथ **/images/product1.jpg ** का उपयोग कर रहा है ** – rorra

+0

'src' विशेषता संपादित करने का प्रयास करें:' Product1 'to' Product1 'फायरबग – codeit

उत्तर

20

आप संपत्ति पाइपलाइन http://guides.rubyonrails.org/asset_pipeline.html का उपयोग कर रहे हैं, तो

छवि पथ /assets/product1.jpg बजाय /images/product1.jpg

आप संपत्ति पाइप लाइन का उपयोग नहीं कर रहे हैं, तो होना चाहिए के लिए कदम छवियों public/images

+0

नहीं। डिफ़ॉल्ट छवि से '/ परिसंपत्तियों/छवियों/' – codeit

+0

@ श्रीकांत परफेक्ट .." /images/product1.jpg "--->" /assets/product1.jpg "बदलते समय काम कर रहे हैं। क्या आप कृपया अपना उत्तर विस्तृत कर सकते हैं क्योंकि मैं इसके लिए नया हूं (हालांकि मैंने आपके द्वारा उल्लिखित यूआरएल की जांच की है .. लेकिन सरल शब्दों में कुछ की सराहना की जाएगी) +1 – swapnesh

+0

@Swapnesh: आपको इस व्यवहार को समझने के लिए एसेट पाइपलाइन दस्तावेज को पढ़ना होगा । रेल से 3.1 संपत्ति पाइपलाइन पेश की गई है। यह छवि, सीएसएस, जेएस को संपत्ति निर्देशिका में ले जा रहा है और फ़ाइल को देखने में पथ को आसान बनाता है। दृश्य फ़ाइल में हम बस /assets/product.jpg, /assets/product.css को कॉल करते हैं, भले ही इसे /assets/images/product.jpg, /assets/stylesheets/product.css में व्यवस्थित किया गया हो। यह उत्पादन पर जेएस, सीएसएस, छवियों को संपीड़ित करने में भी सक्षम बनाता है। –

2

श्रीकांत जैसा कि पहले ही फ़ोल्डर, कहा, संपत्ति पथ संदर्भित किया जाना चाहिए। उदाहरण के तौर पर आप अपने कोड के भीतर <%= image_tag 'rails.png' %> डाल सकते हैं और परिणाम की जांच के लिए फायरबग (या क्रोम के भीतर तत्व का निरीक्षण) की जांच कर सकते हैं।

मुझे पूरा यकीन नहीं है कि आपका कोड क्यों काम नहीं कर रहा है, क्योंकि मैं देख सकता हूं कि आप रेल के साथ एग्इल वेब विकास का पालन करते हैं। मुझे डिपो एप्लिकेशन बिना किसी समस्या के चल रहा है। आपकी तालिका में मैं आपको 'उत्पाद 1', 'उत्पाद 2' और 'उत्पाद 3' देखता हूं, क्या यह वास्तव में image_url text_field के भीतर भरा हुआ है? यदि आप 'product1' को 'product1.jpg' में बदलते हैं तो क्या होता है?

एक तरफ ध्यान दें पर, आप पेपरक्लिप उपयोग करना चाहते हैं, तो आपकी कॉल इस तरह दिखना चाहिए:

<%= image_tag(product.image.url, class: 'list_image') %> 
9

मैं सिर्फ अपने आवेदन की जाँच करें, आपकी कोड के साथ कुछ भी गलत नहीं है। एकमात्र चीज यह समझना है कि कैसे image_tag काम करता है।

आमतौर पर आप ऐप/संपत्ति निर्देशिका पर अपनी सभी छवियां, जावास्क्रिप्ट और स्टाइलशीट डालते हैं। जब आप विकास पर्यावरण पर काम करते हैं, तो उन फ़ाइलों को असंपीड़ित किया जाता है, लेकिन जब आप उत्पादन के लिए तैनात होते हैं, तो संपत्ति प्रीकंपिल्ड, मिनीफाइड होती है, और परिणाम फ़ाइलों को सार्वजनिक/संपत्ति में संग्रहीत किया जाता है।

minified परिसंपत्तियों के पीछे विचार, ग्राहकों के लिए अनुरोध तेजी से करने और बैंडविड्थ को बचाने के लिए है।

अब, विधि image_tag पर, आप छवि के लिए बाहरी पथ, छवि के लिए स्थानीय पथ या छवि के सापेक्ष पथ का उपयोग कर सकते हैं।

जब आप ऐसा करेंगे

<%= image_tag "http://www.mywebsite.com/image.jpg" %> 

यह छवि टैग के लिए संपूर्ण url उपयोग करेगा, और साथ

<img src="http://www.mywebsite.com/image.jpg" /> 

आप

की तरह साथ ही एक स्थानीय पथ में जोड़ सकते हैं, आप खत्म हो जाएगा
<%= image_tag "/images/image.jpg" %> 

जो

में समाप्त होगा
<img src="/images/image.jpg" /> 

जो वास्तव में इस मुद्दे को आप कर रहे हैं, क्योंकि रेल, जब यह फ़ाइलों precompiles, यह /सार्वजनिक/संपत्ति भीतर सब कुछ डालता है, और आप के रूप में पथ के लिए जा रहा /संपत्ति से उन फ़ाइलों को एक्सेस कर सकते हैं अन्य उपयोगकर्ताओं ने समझाया।

तो कोड

<%= image_tag "/assets/image.jpg" %> 

वास्तव में, काम करता है क्योंकि आप

<img src="/assets/image.jpg" /> 

दूसरी बात आप कर सकते हैं के साथ समाप्त, एक रिश्तेदार पथ का उपयोग करने, यानी

<%= image_tag "image.jpg" %> 

है जिसे

0 में परिवर्तित कर दिया जाएगा

और यह अंतिम परिदृश्य भी काम करेगा।

फिर भी, आपके आवेदन पर, आप उपयोगकर्ताओं को एक असली दुनिया अनुप्रयोग पर अपने स्वयं छवियों आपके द्वारा पुस्तक पर अग्रिम, यह बाद में क्या होगा, अपलोड करने के लिए जाने के लिए जा रहे हैं, तो आप paperclip या carrierwave

की तरह एक मणि का उपयोग करेगा
+1

लेखन और समय +1 के लिए Thx :) – swapnesh

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