2014-03-06 34 views
4

目前,我有以下代码:秩序和组按首字母

- @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 

这将显示所有的每个字母下的术语表,而不是只以字母开头的那些。我已经试过一些事情,但我不知道如何选择正确的事情。

回答

4

你应该能够做的一切与你的@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 
+0

有人会在Liquid中做这个吗? [这是我的问题](http://stackoverflow.com/questions/35707352/how-to-group-data-by-first-letter-from-a-csv-file-in-liquid)。 –

3

你靠近。我想你只是想做

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