我使用Nokogiri gem用'each'和'content'方法解析网站。这是一个复杂的解析器,有几种使用这些方法。出于某种原因,某些任务失败并出现错误。 nillclass的未定义方法'content'。并为我提供了我使用这些类的所有通道的参考。这不是常规的致命错误,如果我尝试将这些内容的结果打印出来,那么打印所需的结果但仍然会崩溃。这是我得到的错误:
rake aborted!
undefined method `content' for nil:NilClass
/mnt/shoppe/lib/tasks/parser.rake:50:in `block (6 levels) in <top (required)>'
/mnt/shoppe/lib/tasks/parser.rake:49:in `block (5 levels) in <top (required)>'
/mnt/shoppe/lib/tasks/parser.rake:47:in `block (4 levels) in <top (required)>'
/mnt/shoppe/lib/tasks/parser.rake:27:in `block (3 levels) in <top (required)>'
/mnt/shoppe/lib/tasks/parser.rake:12:in `block (2 levels) in <top (required)>'
我是ruby和RoR的新手。也许有某种类型的错误,如果达到一定数量的错误,只会崩溃程序?无法找到类似这样的东西,很可能我不知道要找的关键词。所以任何帮助都会有用。谢谢。
答案 0 :(得分:1)
root = json;//JSON Object returned from my program
//...
var rootNodes = [ root.children[0], root.children[1] ];
此错误表示,在您的佣金任务的某个时刻,当您致电Undefined method 'content' for nil:NilClass.
时,您的something.content
为something
。
要避免此问题,您可以使用try致电nil
:
content
这样,如果某些something.try(:content)
为something
,您的程序就不会崩溃。
答案 1 :(得分:1)
通常这意味着您的输入在某些时候会有所不同。例如,您正在解析循环中的节点数组并尝试从链接访问获取内容,如下所示:
<div><a href="">test</a></div>
<div><a href="">test</a></div>
<div></div>
注意第三个div。如果您希望代码div
始终包含链接,则代码将在没有链接的div上失败,因为链接将为nil
并尝试获取nil
上的内容你有错误。
要解决此问题,您可以使用link.try(:content)
而不是直接致电link.content
。