以下内容中的最后一个不起作用:
puts node.elasticsearch[:plugin][:jetty][:name]
puts node.elasticsearch[:plugin]['jetty'][:name]
puts node.elasticsearch[:plugin]["'#{entry}'"][:name]
在访问多维数组时,为了在索引中使用变量值,我需要遵循什么语法?
更新: 我认为条目是一个字符串,但我可能是错的,所以这里的语句为你设置了受过良好教育的帮助,以确定是什么:
Dir.entries("/var/plugins/").any? do |entry|
puts node.elasticsearch[:plugin][:jetty][:name]
puts node.elasticsearch[:plugin]['jetty'][:name]
puts node.elasticsearch[:plugin]["'#{entry}'"][:name]
end
答案 0 :(得分:1)
你的哈希中应该有一个键String
,但看起来你在小时哈希中有symoblized键。在这种情况下,请在将字符串用作键之前将其转换为Symbol
。
试试这段代码:
puts node.elasticsearch[:plugin][entry.to_sym][:name]
答案 1 :(得分:1)
您的哈希值使用符号编制索引,因此您应将字符串转换为符号entry.intern()
。
puts node.elasticsearch[:plugin][entry.intern][:name]
修改:to_sym
和intern
为aliases of the String class。因此,条目必须是一个字符串,它似乎是根据您的尝试。