2012-05-19 33 views
0

我拉從我的Rails應用程序從外部API的參數平哈希。我需要在選擇字段中將這些參數呈現給用戶。如何從平面散列值創建分組選擇?

[["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"]上分組?

感謝您的指點。

編輯

順便說一句,我; VE已經嘗試過group_by,因爲它似乎是顯而易見的路要走。但我得到can't convert String into Integer。也許我沒有正確使用它?

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

回答

2
hash.group_by {|h| h["category"] }.map { |h| [ h[0], h[1].map{|e| [e["name"],e["id"]]} ] } 
+0

OK,這使得有很大的意義了。感謝您的幫助!您能否推薦任何有用的信息來幫助解決未來的類似問題。 –