2016-08-17 3 views
0

두 개의 속성, 즉 : 레이블 문자열과 그룹 문자열을 그룹화하는 MyModel이 있습니다. 이 그룹의 레이블은 문자열 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 ] ... ]} 

답변

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을 제공합니다. .chunk은 : 그룹 값을 고려하여 ARel을 통해 반복자를 만듭니다. 해당 루프 내에서 그룹당 해시 항목을 만듭니다.

다른 곳에서 적절한 해결책을 찾을 수 없어이 사실을 알려드립니다.