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

时间:2014-03-06 16:50:08

标签: ruby-on-rails loops select haml

我目前有以下代码:

- @alpha = Glossary.find(:all, :order =>"title ASC").group_by{|u| u.title[0]}
- @glossary = Glossary.find(:all, :order =>"title ASC")

- @alpha.each do|a|

  %h1= a[0]

  - @glossary.each do |g|
    %p display stuff

这会显示每个字母下的所有词汇表术语,而不仅仅是以字母开头的词汇表。我尝试过一些东西,但我不确定如何选择正确的东西。

2 个答案:

答案 0 :(得分:6)

您应该可以使用@alpha实例变量执行所有操作,因为您使用的是group_by

- @alpha = Glossary.find(:all, :order =>"title ASC").group_by{|u| u.title[0]}

- @alpha.each do |alpha, glossary_array|
  %h1= alpha
  - glossary_array.each do |item|
    %p= item

答案 1 :(得分:4)

你很亲密。我想你只想做

- @alpha = Glossary.order("title ASC").group_by{|u| u.title[0]}
- @alpha.each do |letter, items|
  %h1= letter
  - items.each do |item|
    %p= item