Question

I currently have the following code:

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

This displays all of the glossary terms under each letter rather than only the ones that begin with the letter.. I've tried a few things but I'm not sure how to select the right thing.

Was it helpful?

Solution

You should be able to do everything with your @alpha instance variable, since you're using 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

OTHER TIPS

You're close. I think you just want to do

- @alpha = Glossary.order("title ASC").group_by{|u| u.title[0]}
- @alpha.each do |letter, items|
  %h1= letter
  - items.each do |item|
    %p= item
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top