0

コレクションをタイトルのアルファベット順にグループ化したい:

@projects = Project.find_all_by_user_id(current_user.id)

ビューには、タイトルごとにグループ化されたプロジェクトのリストが含まれている必要があります。

A
Andre's Project
Ananas

C
Chemnitz
Cleopatra

F
Find a new office

S
Super secret stuff

しかし、レールでこれを行う方法がわかりませんでした。レールはこれを行う機能を提供していますか、それともタイトルなどを探す独自のループを書く必要がありますか?

ありがとうございました!

4

1 に答える 1

3

Rails ではなく、Ruby がうまく機能します。あなたの見解では:

<% @projects.group_by{ |project| project.name[0].downcase }.each do |letter, projects| %>
  <div id="letter-<%= letter %>" class="letter-group">
    <h2><%= letter.upcase %><h2>
    <% projects.each do |project| %>
      <p><%= link_to project.name, project %></p>
    <% end %>
  </div>
<% end %>

group_by( ruby​​-doc ) は、文字をキーとして、対応するプロジェクトの配列を値として、簡単にループできるハッシュを返します。プロジェクトの名前でソートされたレコードを取得してください: (コントローラー内)

@projects = Project.order("name ASC").find_all_by_user_id(current_user.id)
于 2013-03-04T12:05:21.330 に答える