2013-08-21 5 views
1

나는 그런 루비 온 레일즈 내 MySQL 데이터베이스에서 데이터를 점점 오전 :레일 - 알파벳순 시스템을 만드는 방법?

def all_specs 
    Specialization.order("title ASC").all; 
end 

을 지금, 나는 그런보기 파일이 데이터 정렬 싶습니다

<div class="nav-column"> 
    <h3>A</h3> 
    <ul class="submenu"> 
     <li><a href="#">All data that has title that starts with A</a></li> 
    </ul> 
</div> 

<div class="nav-column"> 
    <h3>A</h3> 
    <ul class="submenu"> 
     <li><a href="#">All data that has title that starts with B</a></li> 
    </ul> 
</div> 

and so on from A-Z 

을 어떻게 할 수 달성 해? 당신은 그룹에 데이터를 수

답변

4

는 : 아주 쉬워야이 해시를 통해 반복

{ 
    "A" => [<Specialization title:"A...">, <Specialization title:"A...">], 
    "B" => [<Specialization title:"B...">, <Specialization title:"B...">], 
    ... 
    "Z" => [<Specialization title:"Z...">, <Specialization title:"Z...">] 
} 

:

specs = Specialization.order("title ASC") 
specs_by_first_letter = specs.group_by { |spec| spec.title[0] } 

이 같은 해시를 반환합니다. 일부 글자가 누락 될 수 있습니다.

+0

큰 사고 : 다음은 구현 및 모두를위한 해시 반복입니다! :) – Zippie

0

많은 도움을 주셔서 감사합니다. Zippie는 놀라운 솔루션을 제공했습니다!

<% 
institutions_c = all_institution_categories 
inst_by_first_letter = institutions_c.group_by { |inst| inst.title[0] } 
%> 

<% inst_by_first_letter.each do |key, value| %> 
    <div class="nav-column"> 
      <h3><%= key %></h3> 
      <ul class="submenu"> 
       <% value.each do |cat| %> 

        <li><%= link_to cat.title, institutions_path(:categories => cat.id), :title => cat.title %></li> 

       <% end %> 
      </ul> 
    </div>