按字母顺序排序并按首字母分组

时间:2016-06-04 07:21:31

标签: ruby-on-rails

我目前正在做一个词典,词汇表http://beta.emangaka.com/definitions

我按字母顺序对定义进行排序。

definitions_controller.rb:

  def index
    @definitions = Definition.all.order('title ASC')
    @titre = "Définitions"
  end

index.html.erb

<% @definitions.each do |definition| %>
...

列表太长了,我总是根据&#34; title&#34;的第一个字母逐个查找。

怎么办?留言Merci。谢谢。

1 个答案:

答案 0 :(得分:3)

您可以使用下面的group_by

@definitions = Definition.all.order('title ASC').group_by{|d| d.title[0]}

在视图中

<% @definitions.each do |letter, definition| %>
  <h2><%= letter %></h2>
  <% definition.each do |defn| %>
    <%= defn %>
  <% end %>
<% end %>