如果没有图像与记录关联,如何防止调用关联图像的图像标记显示?
<%= image_tag @agent.avatar.url %>
...如果没有与该代理关联的图像,则会向我提供“Missing”文本。我想先测试是否有可用的图像,然后在测试返回true时渲染上面的标记。
更好的是,如果没有专门提供图像,我还有指定默认图像吗?
答案 0 :(得分:59)
我使用以下内容来查找模型是否具有关联的附件:
<% if @agent.avatar.file? %>
<%= image_tag @agent.avatar.url(:normal) %>
<% else %>
No attachment available!
<% end %>
答案 1 :(得分:53)
如果头像有多种尺寸:
has_attached_file :avatar,
:styles => {:small => '30x30#', :large => '100x100#'},
:default_url => '/images/missing_:style.png'
for Rails 3:
has_attached_file :avatar,
:styles => {:small => '30x30#', :large => '100x100#'},
:default_url => '/assets/images/missing_:style.png'
答案 2 :(得分:31)
好的,所以我得到了它的一部分。
在模型中指定默认图像
has_attached_file :avatar, :default_url => '/images/brokers/agents/anonymous_icon.jpg'
答案 3 :(得分:18)
少了几个字节:
<% if @agent.avatar? %>
<%= image_tag @agent.avatar.url(:normal) %>
<% else %>
No attachment available!
<% end %>
答案 4 :(得分:3)
最好使用:default_url而不是条件。
答案 5 :(得分:1)
如果在模型中指定了default_url,您可以使用现有方法吗?检查网址是默认网址还是上传网址。
<% if @agent.avatar.present? %>
<%= image_tag @agent.avatar.url(:normal) %>
<% else %>
No attachment available!
<% end %>
答案 6 :(得分:0)
您可以使用此
user.photo.exists?(:medium).
答案 7 :(得分:0)
之前我也遇到过同样的问题,但是使用以下方法解决了这个问题:
<% if @post.image.exists? %>
<%= image_tag @post.image.url %>
<% end %>