我从外部API将参数的平面哈希拉到我的Rails应用程序中。我需要在选择字段中向用户显示这些参数。
哈希的格式如下:
[["Name", "ID", "Category"]]
我想将此作为分组选择。但我相信groups_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"] ] }
答案 0 :(得分:2)
hash.group_by {|h| h["category"] }.map { |h| [ h[0], h[1].map{|e| [e["name"],e["id"]]} ] }