Ruby比赛回归Nil ..就像它的假设一样

时间:2015-06-02 20:40:34

标签: ruby-on-rails ruby string while-loop

我的while循环以某种方式被破坏..我收到此错误:

`block in scrape': undefined method `post_match' for nil
:NilClass   (NoMethodError)

它返回nil就像它在经过字符串之后所假设的一样,并且它也像它所假设的那样填充数组,但是它最后一次击中.post_match它失败了因为它是一个零...但它应该是一个零.. 不知道该怎么办??我希望它只是填充数组,然后在parent_pic_first为nil时退出循环。

parent_pic_first = /\"hiRes\":\"/.match(pic).post_match

   while parent_pic_first != nil

        parent_pic = URI.extract(parent_pic_first, ['http'])

        pic_list = []

        pic_list.push(parent_pic[0])

        parent_pic_first = /\"hiRes\":\"/.match(parent_pic_first).post_match

        end

1 个答案:

答案 0 :(得分:1)

错误不是parent_pic_firstnil的问题,问题是/\"hiRes\":\"/.match(parent_pic_first)nil。您正尝试在post_match值上调用方法nilnil.post_match显然无法发挥作用。

您需要添加一些检查以防止在post_match上调用nil,所以像这样:

parent_pic_first = /\"hiRes\":\"/.match(pic).post_match

while parent_pic_first != nil
  parent_pic = URI.extract(parent_pic_first, ['http'])
  pic_list = []
  pic_list.push(parent_pic[0])
  regex_return = /\"hiRes\":\"/.match(parent_pic_first)
  if regex_return.nil?
    break
  else      
    parent_pic_first = regex_return.post_match
  end
end