访问rails和ruby中的实例变量

时间:2017-03-12 12:42:45

标签: ruby-on-rails ruby

我是ruby和rails的新手,有时我仍然对这两者感到困惑。我试图通过在对象(john.name)之后添加实例变量的名称来调用实例变量,我希望结果是John。不幸的是,出现了NoMethodError。所以我搜索了一个答案,发现你可以使用instance_variable_get方法来做到这一点。但是,我相信当您想要在VIEWS中访问对象的实例变量时,可以在RAILS中执行此操作。

class Person
    def initialize(name)
        @name = name
    end
end
john = Person.new("John")
puts john.instance_variable_get(:@name)
=> John
puts john.name
=> NoMethodError

2 个答案:

答案 0 :(得分:1)

使用attr_reader读取实例变量的值

class Person
  attr_reader :name

  def initialize(name)
    @name = name
  end
end

john = Person.new("John")
john.name #=> "John"

attr_reader在类中添加了一个getter方法,在本例中为

def name
  @name
end

希望有所帮助!

答案 1 :(得分:0)

您需要定义访问实例变量的方法。

class Person
  def initialize(name)
    @name = name
  end

  def name
    @name
  end
end

或者你可以简单地添加attr_accessor来设置getter和setter方法

class Person
  attr_accessor :name

  def initialize(name)
    @name = name
  end
end