Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在RubyonRails中从散列中获取值_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何在RubyonRails中从散列中获取值

Ruby on rails 如何在RubyonRails中从散列中获取值,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正试图通过这样做来获得每个人的组织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} 我尝试过以下方法,但也

我正试图通过这样做来获得每个人的
组织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获得组织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
    }
}

试试这样的

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

试试这样的

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

看起来您有一个散列,其中散列值的键是唯一的字符串。但是,您并不关心这些键,所以只需查看每个哈希值,并将其视为要从中检索的哈希

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

您的代码和我的代码之间的区别在于,对于这个枚举器块,没有两个输出,值
cta
只是散列键。

看起来您有一个散列,其中散列值的键是唯一的字符串。但是,您并不关心这些键,所以只需查看每个哈希值,并将其视为要从中检索的哈希

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

您的代码和我的代码之间的区别在于,对于这个枚举器块,没有两个输出,值
cta
只是散列键。

您提供的输出中有第二个子散列的输入错误。但我认为这应该是你想要的

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

您提供的输出中有第二个子散列的输入错误。但我认为这应该是你想要的

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
输出是散列对象 所以下面的代码给出正确的值

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

输出是散列对象 所以下面的代码给出正确的值

output.each do|k,v|
放置v['organization_id']

结束

输出是什么样子的?刚刚编辑了问题以显示输出@simplelime输出是什么样子的?刚刚编辑了问题以显示输出@simplelime我想你我什么都想砸我的头,我对这些哈希很糟糕我可能弄错了,但是如果这个枚举器块没有两个输出,我相信值
cta
是一个
数组。这就是为什么Michale Yurkovetc的答案同样有效。否?@jvillian我将对此进行测试,如果答案为真,则编辑我的答案。@jvillian这是错的,我的最后一段是正确的。只要为块定义了一个输出,该变量仍然是
。这意味着
值在块中永远不可用,从而使
cta[n][key]
无效。很奇怪。在我的控制台中,如果我像RickS最初那样(只使用
|cta |
而不使用
|键、值|
),并且在每个循环中do
放入cta.class.name
,我会得到
数组。此外,我还尝试了按照Michael的建议将cta[1]['organization\u id']
放入计算机,似乎效果不错。另外,如果
cta
只是散列键,那么OP的
cta
打印将不会将散列作为数组的第二个元素,这一点很明显。谢谢你,我尝试了所有方法,结果砸了我的头,我对这些散列非常糟糕,我可能弄错了,但是这个枚举器块没有两个输出,我相信值
cta
是一个
数组
。这就是为什么Michale Yurkovetc的答案同样有效。否?@jvillian我将对此进行测试,如果答案为真,则编辑我的答案。@jvillian这是错的,我的最后一段是正确的。只要为块定义了一个输出,该变量仍然是
。这意味着
值在块中永远不可用,从而使
cta[n][key]
无效。很奇怪。在我的控制台中,如果我像RickS最初那样(只使用
|cta |
而不使用
|键、值|
),并且在每个循环中do
放入cta.class.name
,我会得到
数组。此外,我还尝试了按照Michael的建议将cta[1]['organization\u id']
放入计算机,似乎效果不错。另外,如果
cta
只是散列键,那么OP的
cta
打印将不包括散列作为数组的第二个元素,这一点很明显。