سؤال

وكيف يمكنني منع علامة صورة الذي يستدعي الصورة المقترنة من عرض إذا لم يتم إقران أي صورة مع السجل؟

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

... يعطيني النص "مفقود" إذا لم يكن هناك صورة المرتبطة بذلك وكيل. أريد أن اختبار لمعرفة ما هناك هو صورة متاحة أولا، ثم تقديم العلامة أعلاه إذا إرجاع الاختبار الحقيقي.

والأفضل من ذلك، هناك على أية حال بالنسبة لي لتحديد الصورة الافتراضية إذا لم يتم توفير صورة على وجه التحديد؟

هل كانت مفيدة؟

المحلول

وأنا استخدم التالية للعثور ما إذا كان النموذج يحتوي على مرفق المرتبطة بها:

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

نصائح أخرى

إذا الصورة الرمزية لديها أحجام متعددة:

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'

حسنا، لذلك حصلت على جزء واحد منه.

وتحديد صورة افتراضية يحدث في النموذج

has_attached_file :avatar, :default_url => '/images/brokers/agents/anonymous_icon.jpg'

وقليلة بايت أقل:

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

ومن الأفضل استخدام: DEFAULT_URL بدلا من الظروف.

إذا تم تحديد DEFAULT_URL في نموذج يمكنك استخدام طريقة الحاضر؟ للتحقق مما إذا كان عنوان URL الافتراضي أو واحد مرفوع.

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

ويمكنك استخدام هذا

user.photo.exists?(:medium).

وكما أتيحت لي نفس المشكلة قبل، ولكن حلها باستخدام:

<% if @post.image.exists? %>
<%= image_tag @post.image.url %>
<% end %>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top