0

在以下最后一个不起作用:

puts node.elasticsearch[:plugin][:jetty][:name]
puts node.elasticsearch[:plugin]['jetty'][:name]
puts node.elasticsearch[:plugin]["'#{entry}'"][:name]

访问多维数组时,为了在索引中使用变量的值,我需要遵循什么语法?

更新:我认为 entry 是一个字符串,但我可能是错的,所以这是为您设置它的语句,让受过教育的助手确定什么是什么:

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
4

2 回答 2

1

您的散列中应该有一个键String,但看起来您在小时散列中有符号化键。在这种情况下,请将您的字符串转换为Symbol, ,然后再将其用作键。

试试这个代码:

puts node.elasticsearch[:plugin][entry.to_sym][:name]
于 2012-05-27T18:53:12.693 回答
1

您的哈希是用符号索引的,因此您应该将字符串转换为符号,使用entry.intern().

puts node.elasticsearch[:plugin][entry.intern][:name]

编辑:to_sym并且internString 类的别名。所以 entry 必须是一个字符串,这似乎是根据您的尝试。

于 2012-05-27T18:54:25.027 回答