2008-11-17 8 views
38

मैं छवि टैग को कैसे रोक सकता हूं जो संबंधित छवि को रिकॉर्ड करने से कहता है कि रिकॉर्ड के साथ कोई छवि संबद्ध नहीं है?कोई छवि मौजूद नहीं होने पर पेपरक्लिप में छिपी हुई छवि कैसे दिखाती है

<%= image_tag @agent.avatar.url %> 

... अगर उस एजेंट से जुड़ी कोई छवि नहीं है तो मुझे पाठ "गायब" देता है। मैं यह देखने के लिए परीक्षण करना चाहता हूं कि पहले एक छवि उपलब्ध है, फिर परीक्षण सही होने पर उपर्युक्त टैग प्रस्तुत करें।

अभी तक बेहतर है, अगर कोई छवि विशेष रूप से प्रदान नहीं की जाती है तो क्या मुझे डिफ़ॉल्ट छवि निर्दिष्ट करने के लिए वैसे भी है?

उत्तर

58

मैं मौसम एक मॉडल एक संबद्ध लगाव है खोजने के लिए निम्नलिखित का उपयोग करें:

<% if @agent.avatar.file? %> 
    <%= image_tag @agent.avatar.url(:normal) %> 
<% else %> 
    No attachment available! 
<% end %> 
+0

मिठाई, इस्तेमाल किया पेपरक्लिप और नहीं था इसके बारे में जानें;) – s84

+0

हालांकि दूसरा उत्तर एक बेहतर सामान्य उद्देश्य समाधान है, लेकिन मैं इसका उपयोग कर रहा हूं क्योंकि अगर कोई संलग्न छवि नहीं है, तो मैं लेआउट को पुनर्व्यवस्थित करना चाहता हूं, न केवल प्लेसहोल्डर छवि प्रदर्शित करता हूं। – Alfo

+0

बहुत अच्छा! यह एक आसान त्वरित फिक्स है। – Jordan

31

ठीक है, तो मुझे इसका एक हिस्सा मिला।

एक डिफ़ॉल्ट छवि निर्दिष्ट मॉडल में क्या होता है

18

कुछ कम बाइट्स:

<% if @agent.avatar? %> 
    <%= image_tag @agent.avatar.url(:normal) %> 
<% else %> 
    No attachment available! 
<% end %> 
+0

इस आदमी को एक बिकी दें। – Smickie

+0

यह पसंद है! –

53

अगर अवतार में कई आकार हैं:

has_attached_file :avatar, 
        :styles => {:small => '30x30#', :large => '100x100#'}, 
        :default_url => '/images/missing_:style.png' 
रेल 3 के लिए

:

has_attached_file :avatar, 
        :styles => {:small => '30x30#', :large => '100x100#'}, 
        :default_url => '/assets/images/missing_:style.png' 
+0

यह करने का यह सही तरीका है। –

+0

सहमत हैं, यह सही दृष्टिकोण है। – Andrew

+3

मैंने संलग्नक वाले एकाधिक मॉडल के लिए default_url '/images/:style/missing_modelname.png' के साथ एक भिन्नता की है। – corroded

3

यह उपयोग करने के लिए बेहतर है: DEFAULT_URL बल्कि स्थिति से।

1

यदि मॉडल में डिफ़ॉल्ट_रल निर्दिष्ट किया गया है तो आप वर्तमान विधि का उपयोग कर सकते हैं? यह जांचने के लिए कि क्या यूआरएल डिफ़ॉल्ट है या अपलोड किया गया है।

<% if @agent.avatar.present? %> 
    <%= image_tag @agent.avatar.url(:normal) %> 
<% else %> 
    No attachment available! 
<% end %> 
0

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

user.photo.exists?(:medium). 
0

मैं भी पहले की तरह ही समस्या थी, लेकिन का उपयोग करके इसे हल: एक लंबे समय के लिए

<% if @post.image.exists? %> 
<%= image_tag @post.image.url %> 
<% end %> 
संबंधित मुद्दे