2014-03-06 61 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