如果没有图像存在,如何在回形针中显示隐藏图像

时间:2008-11-17 21:13:59

标签: ruby-on-rails ruby plugins paperclip

如果没有图像与记录关联,如何防止调用关联图像的图像标记显示?

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

...如果没有与该代理关联的图像,则会向我提供“Missing”文本。我想先测试是否有可用的图像,然后在测试返回true时渲染上面的标记。

更好的是,如果没有专门提供图像,我还有指定默认图像吗?

8 个答案:

答案 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 %>