0

我正在将来自外部 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"] ] }
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 回答