2008-11-17 1 views
38

Как я могу предотвратить тег изображения, который вызывает отображение связанного изображения, если изображение не связано с записью?Как показать скрыть изображение в скрепке, если изображение отсутствует

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

... дает мне текст «Отсутствует», если нет изображения, связанного с этим агентом. Я хочу протестировать, чтобы увидеть, что сначала есть изображение, а затем вынести вышеприведенный тег, если тест возвращает true.

Еще лучше, есть ли в любом случае для меня указание изображения по умолчанию, если изображение не указано конкретно?

ответ

58

Я использую следующий найти кастрированный баран модели имеет ассоциированное вложение:

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

сладкой, используемой скрепки в течение длительного времени и не знать об этом;) – s84 2011-01-16 07:19:07

+0

Хотя другой ответ является лучшим решением общего назначения, я использую этот метод, потому что я хочу изменить порядок расположения, если что-то не имеет прикрепленного изображения, а не просто отображает образ заполнителя. – Alfo 2013-03-09 14:13:44

+0

Очень приятно! Это простое быстрое решение. – Jordan 2014-05-20 02:58:28

31

Хорошо, поэтому у меня есть одна его часть.

Указание изображения по умолчанию происходит в модели

18

несколько байт меньше:

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

Если аватар имеет несколько размеров:

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

для Rails 3:

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

Лучше использовать: а не умолчанию ресурса условий.

1

Если в модели указан параметр default_url, вы можете использовать данный метод? чтобы проверить, является ли URL-адрес по умолчанию или загружен.

<% 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 %> 
Смежные вопросы