James, Can you elaborate on what you mean by "then iterate over instances once within that block"? There has to be a new row for each model field that I want to display, with the value from an instance appearing in its own <td> in that row.
CM On Mon, Sep 17, 2012 at 11:53 AM, James Miller <[email protected]> wrote: > If you don't like iterating over the instances a dozen times, you could > make an array of the headers, iterate over the headers, then iterate over > instances once within that block. > > James > > On Monday, September 17, 2012 at 11:42 AM, Chris McCann wrote: > > Scott, > > Thanks for the speedy reply! > > The array approach was what I originally came up with but it felt a bit > raw. Seems like there should some sort of <%= content_for ... %> approach > or similar that would be more elegant. > > It's not really an issue of performance since all the data needed will be > in memory when the collection is initially loaded. It's about trying not > to create this gawd-awful ugly view with a dozen <% @instances.each do > |instance| %> calls to loop through the model objects each time I want to > create a row of data. > > It just "feels" wrong and I'm hoping someone has tackled this before and > come up with a clever solution. > > Cheers, > > Chris > > On Mon, Sep 17, 2012 at 11:37 AM, Scott Olmsted <[email protected]>wrote: > > Chris, > > First question: is the performance impact enough that it's worth bothering > about? Premature optimization, and all that. > > Second, how about initializing an array for each row, looping through the > models once, tacking the fields you want on to the arrays, and then pulling > from the arrays to construct the view? > > Scott > > > On Monday, September 17, 2012 11:15:40 AM UTC-7, Chris McCann wrote: > > SD Ruby, > > I'm wrestling with a view that displays data from a collection of model > objects in an HTML table with the data from each model instance shown in a > column. I sense there's an elegant way to do what I'm trying to do but I'm > at a loss as to how. > > The markup below shows how the end result should look. What I'm trying to > avoid is having to look through the collection of instances to build each > row. > > <div class="summary"> > > > <table> > <tr> > <th class="first"><a href="#">Summary</a></th> > > > > <!-- loop through collection and write this data for each instance --> > <th><a href="#">201 First St.</a></th> > > > <th><a href="#">1133 Columbia St.</a></th> > </tr> > <tr> > > > <td class="first">Start Date</td> > > <!-- loop through collection and write this data for each instance --> > > <td>01/01/2010</td> > <td>01/01/2010</td> > </tr> > <tr> > <td class="first">Term</td> > > <!-- loop through collection and write this data for each instance --> > > <td>84 Months</td> > <td>84 Months</td> > </tr> > </table> > </div> > > > Is there a better, more Railsy approach that I'm just not seeing? The > actual table is much more complex than what's shown here so I don't want to > go the CSS-only no table route unless there's a really nice solution that > entails not using tables. > > Cheers, > > Chris > > -- > SD Ruby mailing list > [email protected] > http://groups.google.com/group/sdruby > > > -- > SD Ruby mailing list > [email protected] > http://groups.google.com/group/sdruby > > > -- > SD Ruby mailing list > [email protected] > http://groups.google.com/group/sdruby > -- SD Ruby mailing list [email protected] http://groups.google.com/group/sdruby
