为分组选项创建数据结构

时间:2016-08-17 13:17:14

标签: ruby-on-rails-4 actionviewhelper

我的MyModel有两个属性,一个是:label string和一个:group integer,它们对这些字符串进行分组。这些组的标签来自GROUP_LABELS字符串数组。对于我的html视图,我想创建一个带有分组选项的选择控件。

嵌套数组的结果散列必须是:

{ 'Group Label 1': [[ 'Label 1.1', 1 ],[ 'Label 1.2', 2 ]],
  'Group Label 2': [[ 'Label 2.1', 3 ],[ 'Label 2.2', 3 ] ... ]}

1 个答案:

答案 0 :(得分:0)

我的解决方案是:

{}.tap{ |h| [
  MyModel.all.order( :group ).chunk{ |r| r.group }.each{ |g,i| 
    h[ GROUP_LABELS[ g ]] = i.map{ |i| [ i.label, i.id }}]}

MyModel.all.order( :group )给我ARel,按分组属性排序。考虑到:group值,.chunk在ARel上创建一个迭代器,在该循环中我为每个组创建哈希条目。

我想与您分享,因为我在其他地方找不到合适的解决方案。