这似乎是一个显而易见的问题,但我很新。我试图抓取Rotten Tomatoes top 100 movie列表以获得一个简单的CLI应用程序。一切顺利,直到hero.link行,我得到nilClass的未定义方法'属性'。我只是想获得标题链接的href的值。我已经尝试了我理解的所有内容,但我无法在不使用属性方法的情况下弄清楚如何访问我想要的内容。
但是,当我在函数中间使用pry时,我可以手动输入它,它似乎可以工作。
def new_with_rank
self.get_top_page.css(".table tr").each do |e|
hero = Top100::Movie.new
hero.rank = e.css(".bold").text.delete!(".")
binding.pry
hero.rating = e.css(".tMeterScore").text.gsub!(/\u00A0/, "")
hero.title = e.css(".unstyled").text
hero.title.strip! #Don't know why I can't chain onto .text above
hero.reviews = e.css("td.right.hidden-xs").text
hero.link = e.css("td a").attribute("href").value
end
Top100::Movie.all.shift
Top100::Movie.all
binding.pry
end
感谢您的帮助。
答案 0 :(得分:2)
为了将来建议这种调试循环的方法:
def new_with_rank
self.get_top_page.css(".table tr").each do |e|
begin
hero = Top100::Movie.new
hero.rank = e.css(".bold").text.delete!(".")
hero.rating = e.css(".tMeterScore").text.gsub!(/\u00A0/, "")
hero.title = e.css(".unstyled").text
hero.title.strip! #Don't know why I can't chain onto .text above
hero.reviews = e.css("td.right.hidden-xs").text
hero.link = e.css("td a").attribute("href").value
rescue => error
puts error
puts error.backtrace
binding.pry
end
end
Top100::Movie.all.shift
Top100::Movie.all
end