2012-05-27 38 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