Generating a Grouped Output

Hi all, first time poster.

I am currently learning RoR, and have run into a snag. I have a table
called Games that has several fields, including title, desc, genre,
system, etc. What I am looking to do in a view is create an output
that is grouped by system. For example…

Wii
… Wii Sports
… Metroid Prime 3
Xbox 360
… Halo 3

My first thought was to use nested for loops, looping through each
unique system, and then looping through each game that matches that
system, and while I know how to do this in PHP (using procedural
code), I am struggling with how to contain my iteration objects within
the controller, and access them only in the view.

Any thoughts? I hope I am explaining this well.

Thanks,

Martin

Welcome, Martin.

The Rails API docs http://api.rubyonrails.org show that
ActiveRecord::Base#findhttp://api.rubyonrails.org/classes/ActiveRecord/Base.html#M001004can
take a :group option to do what you want. For example,

Game.find(:all, :group => “system”)

Craig

Sorry for the font size weirdness in my reply (or is it only showing for
me?).

Em Seg 08 Out 2007, Craig D. escreveu:

Sorry for the font size weirdness in my reply (or is it only showing for
me?).

Relax… :slight_smile:
We’ll forget about your top-post and HTML-post… :slight_smile:


Davi V.

E-mail: [email protected]
MSN : [email protected]
GTalk : [email protected]
Skype : davi vidal
ICQ : 138815296

I think you are not looking for the SQL group by clause, but rather
grouping on the html view. You can do your find to include the
necessary joins from games to system (maybe vice versa?) and then
render a partial that contains the system and a nested partial to list
games.

Not sure if this is the most efficient way, but it works and you get
reusable partials.

-Jamal