rails点表示法不再适用于访问哈希值,这给出了NoMethodError

问题描述 投票:0回答:1

我正在使用rails 5ruby 2.3.3。今天我添加了一个gem,有一个版本冲突,所以我拿出了宝石。从那时起,像hash.test这样的点符号不再有效。它给了NoMethodError: private method test called for {:test=>"value"}:Hash

如何再次使用点表示法访问哈希?

ruby-on-rails ruby ruby-on-rails-5 ruby-2.3
1个回答
2
投票

无论你使用点符号来访问哈希,都可能使用method_missing来捕获你的点符号方法调用。但是一切都有test方法,因为Kernel#test存在,一切都包括Kernel;此外,Kernel中的所有内容都是私有的,因为Kernel是我们想要伪装的功能的方法。例如:

> 'pancakes'.test
NoMethodError: private method `test' called for "pancakes":String

我怀疑你的问题是你选择:test作为哈希键。

© www.soinside.com 2019 - 2024. All rights reserved.