我使用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的新手。也许有某种类型的错误,只有在达到一定数量的错误时才会使程序崩溃?找不到这样的东西,很可能是我不知道要找的关键词。所以任何帮助都会很有用。谢谢你。
Undefined method 'content' for nil:NilClass.
这个错误意味着,在您的rake任务中,当您调用something.content
时,您的something
是nil
。
为了避免这个问题,您可以使用try:
调用content
something.try(:content)
这样,即使某些something
是nil
,你的程序也不会崩溃。
通常这意味着您的输入在某些时候会发生变化。例如,您正在解析一个循环中的节点数组,并试图从链接访问get内容,如下所示:
<div><a href="">test</a></div>
<div><a href="">test</a></div>
<div></div>
注意第三个div。如果您期望在代码中div
始终包含链接,那么您的代码将在没有链接的div上失败,因为链接将是nil
,并且试图在nil
上获取内容会给您一个错误。
要解决这个问题,您可以使用link.try(:content)
而不是直接调用link.content
。