我正在学习ruby并且难以通过其对象访问类全局变量。以下是我尝试访问它的方式:
MyController类中的代码:
class MyController
def create
my_params = MyClass.new params
p my_params.content
end
end
MyClass类中的代码:
class MyClass
def initialize(content)
@content = content
end
end
当我打印标准时,输出为:
"#<MyClass:0x007fc473bfda58 @content={\"key1\"=>value1, \"key2\"=>value2}>"
我正在尝试打印内容&#34;内容&#34;变量,所以我尝试了my_params.content
。
有了这个,我得到了未定义的方法`内容&#34;错误,我理解它,因为我正在尝试使用方法调用约定/语法来访问变量。
我想从我的控制器打印@content变量。可能吗?我如何打印&#34;内容&#34;来自我的控制器使用变量&#34; my_params&#34;?
答案 0 :(得分:1)
仅仅因为MyClass
有一个名为@content
的实例变量并不意味着它会自动为该变量提供访问器方法。
class MyClass
attr_accessor :content
end
如果您的类具有attr_accessor
行或实际通过其他方法公开实例变量,那么您应该能够访问它。否则,Ruby实际上不允许您将实例变量名称作为方法直接调用到类的实例。