0

パラメータのフラットハッシュを外部APIからRailsアプリにプルしています。これらのパラメーターを選択フィールドでユーザーに提示する必要があります。

ハッシュの形式は次のとおりです。

[["Name", "ID", "Category"]]

これをグループ化された選択として提示したいと思います。しかし、grouped_selectタグは、フラットハッシュではなく、階層ハッシュを取ると思いますか?

このハッシュを構造化ハッシュに再構築する簡単な方法はありますか?すなわち、

['CategoryA', [['Name-A1','ID-A1'],['Name-A2', 'ID-A2']]

参考までに、私は現在、このようにコントローラーでハッシュを処理しています

@hash = session["hash"].map { |h| [ h["name"], h["id"], h["category"] ] }

とビューで

<%= f.select :hash_id, @hash %>

これにより、順序付けられていないオプションのリストが表示されます。どうすればグループ化できh["category"]ますか?

ポインタをありがとう。

編集

ちなみに、当たり前のgroup_byように思えたので、もうやってみました。しかし、私は得てcan't convert String into Integerいます。おそらく私はそれを正しく使用していませんか?

hash.group_by {|h| h["category"] }.map { |h| [ h["name"], h["id"], h["category"] ] }
4

1 に答える 1

2
hash.group_by {|h| h["category"] }.map { |h| [ h[0], h[1].map{|e| [e["name"],e["id"]]} ] }
于 2012-05-19T10:46:20.063 に答える