【问题标题】:Order alphabetically and group by first letter按字母顺序排列并按首字母分组
【发布时间】:2014-03-06 16:50:08
【问题描述】:

我目前有以下代码:

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

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

【问题讨论】:

    标签: ruby-on-rails loops select haml


    【解决方案1】:

    您应该能够使用您的 @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
    

    【讨论】:

    【解决方案2】:

    你已经接近了。我想你只是想做

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

    【讨论】:

      猜你喜欢
      • 2017-02-28
      • 1970-01-01
      • 2018-12-03
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 1970-01-01
      相关资源
      最近更新 更多