はそれを取る:
a = {"a1"=>{"a11"=>11, "a12"=>12, "a13"=>13, "a14" => {"a141" => 141} }}
def modi(hash)
hash.map do |key, value|
if value.is_a?(Hash)
value = modi(value).flatten(1)
["[#{key}]" + value.first, value.last]
else
["[#{key}]", value]
end
end
end
def pars(main_hash)
main_hash.map do |key, value|
modi(value).each_with_object({}) do |v, res|
res[v.first.prepend(key.first)] = v.last
end
end.first #*
end
pars(a)
> {"a[a11]"=>11, "a[a12]"=>12, "a[a13]"=>13, "a[a14][a141]"=>141}
*を。またはあなたがfirst
メソッドを削除することができますし、それは返す:
[{"a[a11]"=>11, "a[a12]"=>12, "a[a13]"=>13, "a[a14][a141]"=>141}]
これはあなたを助けることができ、将来的にあなたには、いくつかの新しい機能を追加します場合は、例えば、入力は次のようになります。 `
a = {"a1"=>{"a11"=>11, "a12"=>12, "a13"=>13, "a14"=>{"a141"=>141}}, "b1"=>{"b11"=>11}}
その後、 、このメソッドの戻り値first
なし:
[{"a[a11]"=>11, "a[a12]"=>12, "a[a13]"=>13, "a[a14][a141]"=>141,{"b[b11]"=>11}]
を私の推測では、あなたは、あなたがいけないのチェックボックスで何かをやろうとしているということです。最初の問題は何ですか? – ndn
あなたの質問は不明です。 「働かない」とはどういう意味ですか?エラーメッセージが表示されますか?はいの場合、それは何を言いますか?それはどんな線を指していますか?出力はありますか?はいの場合、どの出力を得ますか?あなたはどんなアウトプットを期待していますか?なぜですか?そして、これは[tag:ruby-on-rails]と何が関係していますか? –
@JörgWMittag、公正であるように、私はあなたが*「能動的なサポート依存ソリューションを受け入れる」*という意味なら、[tag:ruby-on-rails]としてタグ付けすることが適切だと思います。 – ndn