Ruby:类传递运行对象的方法

时间:2017-04-09 20:58:58

标签: ruby sinatra helper

我有一个类,我在其中创建一个名为@client的新实例变量,它本身就是一个对象。现在,在另一个文件中,我从这个类创建了一个对象,但是无法访问@client对象的方法。我该怎么办?

示例:

class A_Helper
    def initialize
        @client = Module::Client.new('info')
        p @client
        # <Module::Client:0x000000017fd018>
    end
end
---------------------------
class A_Controller
    @A_Helper = A_Helper.new
    p @A_Helper.client
    # <class:A_Controller>: undefined method `client' for nil:NilClass

1 个答案:

答案 0 :(得分:1)

您已声明了一个本地变量@client,只能在您的班级内访问。如果您想从外部访问,则需要声明getter或快捷方式,例如attr_accessor / attr_reader(请查看此post)。

class A_Helper
  attr_reader :client

  def initialize
    @client = Module::Client.new('info')
  end
end