实例方法无法对实例变量进行操作

时间:2016-03-09 16:51:08

标签: ruby nokogiri

即使我需要Nokogiri并初始化变量,我的方法也无法访问Nokogiri方法。我想这样做:

class Requester

require 'nokogiri'

  def initialize(body)
    @body = body
  end

  def destination
    @body.at_css('destination')
  end
end

然后我传递body,这是Nokogiri文档。

mess = Requester.new(body)

当我这样做时,我得到一个“没有方法错误”:

mess.destination

我不明白。如果我require,我认为我的班级将拥有所有的Nokogiri方法。

完整错误在at_css上,如下所示:

NoMethodError (undefined method `at_css' for #<Requester:0x007f685d971478>

1 个答案:

答案 0 :(得分:-1)

您感到困惑 p x y i meanmarkstable 1 1 4 0 0 0.5588339 2 2 4 1 0 1.8035799 3 3 4 2 0 3.3992581 4 4 4 3 0 3.2959390 5 5 4 4 0 2.1132312 6 6 3 0 0 1.6559496 7 7 3 1 0 5.5518658 8 8 3 2 0 10.5182801 9 9 3 3 0 10.1597853 10 10 3 4 0 6.2832065 11 11 2 0 0 2.5529727 12 12 2 1 0 8.6038936 13 13 2 2 60 4.7103612 14 14 2 3 40 7.6160733 15 15 2 4 0 10.0581368 16 16 1 0 0 1.6560550 17 17 1 1 0 5.5599181 18 18 1 2 0 10.6956613 19 19 1 3 0 11.0335128 20 20 1 4 0 7.7616822 21 21 0 0 0 0.5589243 22 22 0 1 0 1.8099875 23 23 0 2 0 3.5421055 24 24 0 3 0 4.0856978 25 25 0 4 0 2.1128894 Will install Watch App called with bad bundle identifier '(null)

require加载文件或gem。

include包含另一个对象的方法。

require

include

a.rb

module A
  def hello
    "hello world"
  end
end

但是,你真的需要重新考虑你想要做的事情。你不能包括一个类 - 你扩展类。您要查找的对象是班级b.rb

如果您正在尝试构建文档搜寻器,则可以使用委托者模式:

require 'a'
class B
  include A
end

puts B.new.hello # hello world

或者您将创建Nokogiri::HTML::Document的子类。