[OK]を、あなたは、あなたの質問に指定されていませんでしたので、私はあなたが1層を除去したいと仮定しています。
my_hash = {
:category_1 => {
:solution_1 => { :order => 2 },
:solution_2 => { :order => 3 }
},
:category_2 => {
:solution_3 => { :order => 4 },
:solution_4 => { :order => 1 }
}
}
Hash[my_hash.inject({}) { |h, (k, v)| h.merge(v) }.sort_by { |k,v| v[:order] }]
#=> {:solution_4=>{:order=>1}, :solution_1=>{:order=>2}, :solution_2=>{:order=>3}, :solution_3=>{:order=>4}}
EDIT:
は、アカウントにあなたの明確化を撮影する(そしてまだ私は上記の投稿を修正ソートされていないハッシュから開始):ソートが動作するか私が実際に見始めハッシュを少し変更し
sorted = my_hash.inject({}) do |h, (k, v)|
h[k] = Hash[v.sort_by { |k1, v1| v1[:order] }]
h
end
#=> {:category_1=>{:solution_1=>{:order=>2}, :solution_2=>{:order=>3}}, :category_2=>{:solution_4=>{:order=>1}, :solution_3=>{:order=>4}}}
あなたは結果として何をしたいですか?ネストの1つのレベルを削除したいですか?さもなければ、あなたのハッシュはすでに注文されています... –
あなたはどんな出力をしますか? :カテゴリハッシュまたは:ダミーハッシュ?そして、もし1つが「1」と「4」を、もう1つが「2」と「3」を注文すればどうなるでしょうか? – Gareth