"未定义的方法"错误红宝石

时间:2014-03-22 19:42:30

标签: ruby

我正在学习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;?

1 个答案:

答案 0 :(得分:1)

仅仅因为MyClass有一个名为@content的实例变量并不意味着它会自动为该变量提供访问器方法。

class MyClass
  attr_accessor :content
end

如果您的类具有attr_accessor行或实际通过其他方法公开实例变量,那么您应该能够访问它。否则,Ruby实际上不允许您将实例变量名称作为方法直接调用到类的实例。