2012-05-27 34 views
0

出于以下最后一个不工作:如何使用可变字符串访问多维数组?

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 

回答

1

你的哈希被索引的符号,所以你应该将字符串转换成一个符号,与entry.intern()

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

编辑:to_syminternaliases of the String class。所以入口必须是一个字符串,这似乎是根据你的尝试。

1

你应该有一个关键String你的哈希,但它看起来像你在小时哈希中有symoblized键。在这种情况下,将字符串转换为Symbol,然后将其用作关键字。

试试这个代码:

puts node.elasticsearch[:plugin][entry.to_sym][:name] 
+0

对不起,我没有向下滚动,并最终使用@philant的答案,才看到你的...... – pulkitsinghal