如何从rails中的ruby中的哈希值中获取值

时间:2017-09-14 18:08:20

标签: ruby-on-rails ruby

我试图通过这样做为每个人organization_id

output.each do |cta|      
  puts cta['organization_id']
end

这就是cta打印出来的:

9763u5r169w6
{"domain"=>"test.test.com", "api_key"=>"**********", "flow_id"=>5, "email"=>"test@test.com", "organization_id"=>1}

我尝试过以下方式做到这一点,但也没有运气:

puts cta[0]['organization_id']
puts cta[0][:organization_id]
puts cta[:organization_id]

如何从cta中获取organization_id?

编辑:这是输出的样子

{
    "7t6tqrwvnt37" => {
        "domain" => "test.test.com", "api_key" => "************", "flow_id" => 5, "email" => "test@test.com", "organization_id" => 1
    }, "9mwe71j08a3c" => {
        "domain" => "test.test.com", "api_key" => ""************",", "flow_id" => 5, "email" => "test@test.com", "organization_id" => 1
    }
}

4 个答案:

答案 0 :(得分:3)

看起来你有哈希哈希值,其中哈希值的键是唯一字符串。但是,您不关心密钥,因此只需查看每个哈希值并将其视为要从中检索的哈希值。

output.each do |key, value|
  puts value['organization_id']
end

您的代码和我的代码之间的区别在于,如果没有此枚举器块的两个输出,则值cta只是哈希键。

答案 1 :(得分:1)

您提供的输出在第二个子哈希中有一个拼写错误。但我认为这应该做你想要的。

cta = { "7t6tqrwvnt37"=> { "domain"=>"test.test.com", "api_key"=>"************", "flow_id"=>5, "email"=>"test@test.com", "organization_id"=>1 },
        "9mwe71j08a3c"=> { "domain"=>"test.test.com", "api_key"=>"************", "flow_id"=>5, "email"=>"test@test.com", "organization_id"=>1 } }

# Loop over hash and print organization_id value.
cta.each do |key, value|
  puts value["organization_id"]
end

答案 2 :(得分:1)

输出是哈希对象 所以下面的代码给出了正确的值

output.each do |k,v| puts v['organization_id'] end

答案 3 :(得分:0)

尝试这样的事情

output.each do |cta|
  puts cta[1]['organization_id']
end