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
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_syminternStringクラスのエイリアスです。したがって、エントリは文字列である必要があります。これは、あなたの試みによるもののようです。

于 2012-05-27T18:54:25.027 に答える