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

6
我目前有以下代码:
- @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个回答

7

由于您正在使用group_by,因此您应该能够使用@alpha实例变量完成所有操作:

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

有人要如何在Liquid中完成这个任务?这是我的问题 - Miloš Miljković

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接