Как показать скрытое изображение в скрепке, когда изображение отсутствует - PullRequest
39 голосов
/ 18 ноября 2008

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

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

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

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

Ответы [ 8 ]

59 голосов
/ 18 ноября 2008

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

<% if @agent.avatar.file? %>
  <%= image_tag @agent.avatar.url(:normal) %>
<% else %>
  No attachment available!
<% end %>
53 голосов
/ 16 ноября 2010

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

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'
31 голосов
/ 18 ноября 2008

Ладно, у меня есть одна часть.

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

has_attached_file :avatar, :default_url => '/images/brokers/agents/anonymous_icon.jpg'
18 голосов
/ 02 марта 2010

Меньше байтов:

<% if @agent.avatar? %>
  <%= image_tag @agent.avatar.url(:normal) %>
<% else %>
  No attachment available!
<% end %>
3 голосов
/ 18 ноября 2010

Лучше использовать: default_url, а не условия.

1 голос
/ 20 августа 2014

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

<% if @agent.avatar.present? %>
  <%= image_tag @agent.avatar.url(:normal) %>
<% else %>
  No attachment available!
<% end %>
0 голосов
/ 14 марта 2017

У меня тоже раньше была такая же проблема, но я решил ее с помощью:

<% if @post.image.exists? %>
<%= image_tag @post.image.url %>
<% end %>
0 голосов
/ 19 декабря 2014

Вы можете использовать это

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