如何绕过网址中的非法八进制数字?

时间:2013-03-25 17:56:11

标签: ruby-on-rails

我的rails应用程序中有一个方法可以从og:image标记网址中保存图像。

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

这在大多数情况下都有效,除非图片网址恰好包含一个以0开头的数字,例如http://ad009cdnb.website.com/rest-of-url

在这些情况下,我收到了非法的八进制数字错误。

如何防止该方法认为以零开头的任何数字都是base-8?

2 个答案:

答案 0 :(得分:2)

这不是答案。很抱歉错误地使用了系统。无法在链接中找到如何使用HTTP放置字符串作为注释。

URI.parse正常工作:

URI.parse("http://ad009cdnb.website.com/rest-of-url").to_s
=> "http://ad009cdnb.website.com/rest-of-url"

正如大家所说,我们真的需要一个堆栈跟踪或其他东西来帮助你。而且很可能您希望将URL保存为字符串,而不是数据库中的对象。

答案 1 :(得分:1)

大家好我发布了这个问题,但我再也无法重现这个问题了。

由于这不再是一个问题,我认为最好的做法是结束这个问题。但是,我看到有些人已经投票赞成他们的评论(他们提出了好处,比如保存为字符串而不是对象)。如果问题结束,他们会被抹黑吗?

我很感激每个人的意见,并且不想让任何人感到不安。对于这种情况,SO协议是什么?