如何将救援添加到简单的uri解析方法中

时间:2012-12-11 20:06:43

标签: ruby-on-rails rescue

我有一个从网址上传图片的简单方法。

def photo_from_url(url)
  if !Nokogiri::HTML(open(url)).css("meta[property='og:image']").blank?
    photo_url = Nokogiri::HTML(open(url)).css("meta[property='og:image']").first.attributes["content"]
    self.photo = URI.parse(photo_url)
    self.save
  end
end

这在大多数情况下都可以正常工作,但如果网址未按预期格式化,有时会返回can't convert URI::Generic into String。我只是想在这种情况下放弃保存照片。我需要在方法中添加什么?

我尝试添加

rescue => e                                                      
  error_message = e.message                                      
  response_message = "Unknown error"                             
end

到基于此post的方法的结尾,但这会导致语法错误:

unexpected keyword_rescue, expecting keyword_end

我/如何正确使用救援方法?目前,该方法通常工作得很好,所以我很高兴它只是跳过任何未格式化的URL,而不是返回错误。 谢谢你帮助新手。

1 个答案:

答案 0 :(得分:1)

试试这个:

def photo_from_url(url)
  begin
    if !Nokogiri::HTML(open(url)).css("meta[property='og:image']").blank?
      photo_url = Nokogiri::HTML(open(url)).css("meta[property='og:image']").first.attributes["content"]
      self.photo = URI.parse(photo_url)
      self.save
    end
  rescue => e
    puts "error"
  end
end