我正在制作地图,以便为PDF导出格式化一些数据。其中一部分是使用OpenURI打开图像。但是,我遇到的问题是某些图像链接是外部站点并且已损坏。因此我随机得到404错误......
我已尝试在地图内进行救援,但错误。我尝试在方法中进行救援,但之后却没有数据。这样做的正确方法是什么?
理想情况下,我想将图像设置为我在服务器上的占位符图像。首先定义一个单独的方法来处理它会更好吗?
目前我的方法是:
def wish_list_item_rows
WishListItem.where(:wish_list_id => @wish_list.id).map { |wishlistitem| [wishlistitem.product.name, {:image => open(wishlistitem.product.image_url)}] }
end
答案 0 :(得分:2)
您可以在地图块中进行拯救(您可能会稍微关闭语法)但是将救援工作移动到自己的方法通常会更加清晰。通过调用
等方法替换open
def safe_open(url)
open(url)
rescue # put a specific error class here ideally
load_placeholder_image
end
完成代码:
def safe_open(url)
if url.blank?
safe_open = "#{Rails.root}/app/assets/images/placeholder.png"
else
open(url)
end
rescue OpenURI::HTTPError => e
if e.message == '404 Not Found'
safe_open = "#{Rails.root}/app/assets/images/placeholder.png"
end
end