我正在将来自外部 API 的参数的平面散列提取到我的 Rails 应用程序中。我需要在选择字段中将这些参数呈现给用户。
哈希的格式如下:
[["Name", "ID", "Category"]]
我想将此作为分组选择。但我相信 grouped_select 标签采用分层哈希,而不是平面哈希?
有没有一种简单的方法可以将此散列重组为结构化散列?IE,
['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"] ] }