我对我的红宝石代码有疑问

时间:2019-02-01 01:10:48

标签: ruby

我的一些代码遇到了这个问题。

scraper.rb:14:in `block (2 levels) in scrape_movieinfo':  undefined method `slice!' for nil:NilClass (NoMethodError)
        from /usr/local/rvm/gems/ruby-2.3.1/gems/nokogiri-1.10.1/lib/nokogiri/xml/node_set.rb:238:in `block in each'
        from /usr/local/rvm/gems/ruby-2.3.1/gems/nokogiri-1.10.1/lib/nokogiri/xml/node_set.rb:237:in `upto'
        from /usr/local/rvm/gems/ruby-2.3.1/gems/nokogiri-1.10.1/lib/nokogiri/xml/node_set.rb:237:in `each'
        from /home/empathetic-file-5230/temporary/Project1/Best50Films2018/lib/Best50Films2018/scraper.rb:12:in `block in scrape_movieinfo'
        from /usr/local/rvm/gems/ruby-2.3.1/gems/nokogiri-1.10.1/lib/nokogiri/xml/node_set.rb:238:in `block in each'
        from /usr/local/rvm/gems/ruby-2.3.1/gems/nokogiri-1.10.1/lib/nokogiri/xml/node_set.rb:237:in `upto'
        from /usr/local/rvm/gems/ruby-2.3.1/gems/nokogiri-1.10.1/lib/nokogiri/xml/node_set.rb:237:in `each'
        from /home/empathetic-file-5230/temporary/Project1/Best50Films2018/lib/Best50Films2018/scraper.rb:8:in `scrape_movieinfo'
        from /home/empathetic-file-5230/temporary/Project1/Best50Films2018/lib/Best50Films2018/cli.rb:6:in `run'
        from bin/Best50Films2018:3:in `<main>'

2 个答案:

答案 0 :(得分:2)

下次您问类似这样的错误的问题时,请显示代码。您评论了“这是代码”。但是唯一的代码是错误消息。

基于对Ruby的非常有限的了解,您的错误表明您没有在尝试调用私有方法,否则会给您这样的错误。

private method encrypt' called for #<Person:0x007fa179863770 @name="Ada"

该方法似乎未定义。已经制作好了吗? "undefined method" error ruby我真的不知道该怎么回答,没有太多信息,而且我很确定如果不实际显示代码,就无法回答这个问题。

可能是您使用的“切片!”没有任何参数。

这就像制作一个可以接受1个变量(参数)的方法,但是您没有调用它。

答案 1 :(得分:1)

错误消息的第一行告诉您:在14的{​​{1}}行中,您对scraper.rb的对象调用slice!方法。

这通常意味着什么:nil是为几种不同类型的对象定义的方法,例如:slice!StringHash。好像在Array中,您认为您有一个带有这些对象之一的实例的变量,但实际上,该变量为scapper.rb:14

由于您尚未发布代码,因此没人会告诉您出了什么问题以及如何解决。建议您查看将变量分配给该变量的位置。或者看看变量名中是否有简单的错字。