如果用户照片不存在,然后显示通用图像

问题描述:

在我的应用程序中,我可以选择让用户通过回形针上传个人资料图片的图像。如果用户照片不存在,然后显示通用图像

希望我想在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 %> 

什么我的问题可能是任何想法下面的代码?

感谢

+0

什么是生成的HTML就像客人的情况? 'img src'说什么?如果您将浏览器指向该URL,会发生什么情况?您是否尝试过手动访问'guest.png'? – Amadan 2012-02-29 15:29:49

有这样的事情在你的用户模型:

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

由于这是观点的逻辑,我把它放在一个帮手,而不是在模型中。因此,在相关帮手中:

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

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