如何使用Paperclip正确处理Rails中的“图像未找到”错误

时间:2013-03-28 12:14:24

标签: ruby-on-rails paperclip

我正在使用Paperclip为用户存储个人资料照片。我试图通过仅允许某些文件类型等来严格控制。然而,用户设置错误操作是很常见的。

在我的index.html.erb文件中,我列出了所有用户配置文件,但是这个列表通常会在生产环境中抛出Application Error,如果其中一个图像损坏,找不到等等,整个过程就会失败,整个页面都失败了。

目前我找到了这样的图片

<% @members.each do |member| %>
  <tr>
<td><%= image_tag member.avatar.url(:thumb) %></td>
</tr>
<% end %>

如果由于某种原因图像失败,我将如何将其包装在不允许页面失败的代码中,并显示替代图像,如PaperClip文档(也就是默认图像)中所指定的那样。

2 个答案:

答案 0 :(得分:4)

我建议在模型中编写一个检查条件并从View调用方法的方法。

Model: 

def image_url(image_size)
  avatar_image = member.avatar
  if avatar_image.present? && avatar_image.url(image_size).present?
    return avatar_image.url(image_size)
  else
    return "/images/default_image.jpg"
  end
end

View:
<%= image_tag member.image_url(:thumb) %>

答案 1 :(得分:2)

试试这个。

在你的模特中:

has_attached_file :image, :default_url => "/images/no-image.jpg"