如果用户照片不存在则显示通用图像

时间:2012-02-29 15:26:31

标签: ruby-on-rails image paperclip

在我的应用程序中,我可以选择让用户通过回形针上传个人资料图片的图像。

我希望在index.html.erb页面中显示的是显示所有用户的显示图片,如果他们没有上传,则应显示默认图片。

现在我已尝试对其进行编码,但目前有图片的用户已经显示但是没有得到任何内容的用户。

我的用户模型中有以下代码:

def user_photo
  (photo.url.present?) ? photo.url : '/images/guest.png'
end

以及我的index.html.erb中的以下代码

<% for user in @users %>
 .............
  <%= image_tag user.user_photo, :height => 50, :width => 50 %>
 ..............
 <% end %>

关于我的问题可能是什么想法?

由于

2 个答案:

答案 0 :(得分:0)

在您的用户模型中有这样的内容:

has_attached_file :photo, 
    :default_url => '/images/guest.jpeg',
    :styles => { 
      :large => "300x300>",
      :thumb => "100x100>",
      :tiny  => "32x32>"
    }

如果模型没有附加文件,则使用:default_url选项。如果用户没有任何上传的照片,您可以使用此选项设置要显示的默认照片。

在视图中:

<%= image_tag @user.photo.url(:thumb) %>

阅读Paperclip usage guide

答案 1 :(得分:0)

由于这是视图逻辑,我会把它放在帮助器而不是模型中。所以在一个相关的帮手:

def user_photo(user)
  user.photo.url.present? ? image_tag user.user_photo : image_tag 'guest.png'
end

然后从视图中调用该帮助程序。当然,您可以为image_tag添加其他参数以获取尺寸等。通过这种方式,您可以始终如一地使用image_tag助手。