![](/img/trans.png)
[英]nil returned when accessing ruby/rails instance variable's attributes
[英]Accessing instance variable in rails and 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
使用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
希望有帮助!
您需要定义访问实例变量的方法。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.