mam hash rubinowy, który wygląda takjaki jest najlepszy sposób przekonwertować hash rubinowy do tablicy
{ "stuff_attributes" => {
"1" => {"foo" => "bar", "baz" => "quux"},
"2" => {"foo" => "bar", "baz" => "quux"}
}
}
i chcę, aby przekształcić go w haszyszu, który wygląda tak
{ "stuff_attributes" => [
{ "foo" => "bar", "baz" => "quux"},
{ "foo" => "bar", "baz" => "quux"}
]
}
Muszę również zachować porządek numeryczny kluczy i istnieje zmienna liczba kluczy. Powyższe jest super uproszczone, ale dodałem prawdziwy przykład na dole. Jaki jest najlepszy sposób na zrobienie tego?
PS
Musi także być rekurencyjne
Jeśli chodzi o rekurencji idzie, oto co możemy założyć:
1) kluczem, który musi być manipulowane będzie pasował/_attributes $/ 2) hash będzie miał wiele innych kluczy, które nie pasują/_attributes $/ 3) klucze wewnątrz skrótu będą zawsze mieć numer 4) asocjacja _attributes może znajdować się na dowolnym poziomie skrótu pod dowolnym innym kluczem
ten skrót jest w rzeczywistości hash params od akcji tworzenia w kontrolerze. To jest prawdziwy przykład tego, co trzeba będzie sparsować z tą procedurą.
{
"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: niezdefiniowana zmienna lokalna lub metoda 'key 'dla # \t from/storage/cait/development/app/helper/application_helper .rb: 6: w 'array_from_hash ' –
po naprawieniu tego błędu poprzez zmianę klucza k.to_i.to_s == na k.to_i.to_s == k, działa perfekcyjnie! dzięki! –
Masz kilka ciekawych pomysłów na wcięcie tutaj :) – rfunduk