我正在rails 5
使用ruby 2.3.3
。今天我添加了一个gem,有一个版本冲突,所以我拿出了宝石。从那时起,诸如hash.test
之类的点符号不再有效。它给出了NoMethodError: private method test called for {:test=>"value"}:Hash
如何再次使用点表示法访问哈希?
答案 0 :(得分:2)
无论您使用点符号来访问哈希值,都可能使用method_missing
来捕获点符号方法调用。但是所有内容都有test
方法,因为Kernel#test
存在且所有内容都包含Kernel
;此外,Kernel
中的所有内容都是私有的,因为Kernel
是我们想要伪装的函数的方法。例如:
> 'pancakes'.test
NoMethodError: private method `test' called for "pancakes":String
我怀疑您的问题是您选择:test
作为哈希键。