Ответ 1
Я использую следующее, чтобы найти, что модель имеет соответствующее вложение:
<% if @agent.avatar.file? %>
<%= image_tag @agent.avatar.url(:normal) %>
<% else %>
No attachment available!
<% end %>
Как я могу предотвратить тег изображения, который вызывает отображение связанного изображения, если изображение не связано с записью?
<%= image_tag @agent.avatar.url %>
... дает мне текст "Отсутствует", если нет изображения, связанного с этим агентом. Я хочу проверить, есть ли первое изображение, а затем вынести вышеприведенный тег, если тест возвращает true.
Еще лучше, есть ли в любом случае для меня указание изображения по умолчанию, если изображение не указано конкретно?
Я использую следующее, чтобы найти, что модель имеет соответствующее вложение:
<% 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'
для Rails 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 %>