J'ai un hachage rubis qui ressemble à cecice qui est la meilleure façon de convertir un hachage rubis à un tableau
{ "stuff_attributes" => {
"1" => {"foo" => "bar", "baz" => "quux"},
"2" => {"foo" => "bar", "baz" => "quux"}
}
}
et je veux en faire un hachage qui ressemble à ceci
{ "stuff_attributes" => [
{ "foo" => "bar", "baz" => "quux"},
{ "foo" => "bar", "baz" => "quux"}
]
}
J'ai aussi besoin de préserver l'ordre numérique des touches, et il y a un nombre variable de clés. Ce qui précède est super-simplifié, mais j'ai inclus un exemple réel en bas. Quelle est la meilleure façon de faire cela?
PS
Il doit également être récursive
En ce qui concerne la récursion va, voici ce que nous pouvons supposer:
1) la clé qui doit être manipulé détectera/_attributes $/ 2) le hachage aura beaucoup d'autres clés qui ne correspondent pas/_attributs $/3) les clés à l'intérieur du hachage seront toujours un nombre 4) un hachage _attributes peut être à n'importe quel niveau du hachage sous toute autre clé
ce hachage est en fait le hachage params d'une action de création dans le contrôleur. Ceci est un exemple réel de ce qui devra être analysé avec cette routine.
{
"commit"=>"Save",
"tdsheet"=>{
"team_id"=>"43",
"title"=>"",
"performing_org_id"=>"10",
"tdsinitneed_attributes"=>{
"0"=>{
"title"=>"",
"need_date"=>"",
"description"=>"",
"expected_providing_organization_id"=>"41"
},
"1"=>{
"title"=>"",
"need_date"=>"",
"description"=>"",
"expected_providing_organization_id"=>"41"
}
},
"level_two_studycollection_id"=>"27",
"plan_attributes"=>{
"0"=>{
"start_date"=>"", "end_date"=>""
}
},
"dataitem_attributes"=>{
"0"=>{
"title"=>"",
"description"=>"",
"plan_attributes"=>{
"0"=>{
"start_date"=>"",
"end_date"=>""
}
}
},
"1"=>{
"title"=>"",
"description"=>"",
"plan_attributes"=>{
"0"=>{
"start_date"=>"",
"end_date"=>""
}
}
}
}
},
"action"=>"create",
"studycollection_level"=>"",
"controller"=>"tdsheets"
}
NameError: variable locale non définie ou méthode 'key 'pour # \t de/storage/cait/développement/app/helpers/application_helper .rb: 6: dans 'array_from_hash ' –
après avoir corrigé cette erreur en changeant k.to_i.to_s == clé de k.to_i.to_s == k, cela fonctionne parfaitement! Merci! –
Vous avez des idées intéressantes ici indentation :) – rfunduk