Ah, yes, now you're talking!  I think this could be the way to go.

Cheers,

Chris

On Mon, Sep 17, 2012 at 12:04 PM, James Miller <[email protected]> wrote:

>  Something like:
>
> <%
> headers = [
>   ["Summary", "summary"],
>   ["Term", "term"],
>   ["Start Date", "start_date"]
> ]
> %>
>
> <table>
>   <% headers.each do |header| %>
>     <tr><% header[0] %></tr>
>     <% @collection.each do |item| %>
>       <td><%= item.send(header[1]) %></td>
>     <% end %>
>   <% end %>
> </table>
>
> On Monday, September 17, 2012 at 11:56 AM, Chris McCann wrote:
>
> 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
>
>
>  --
> SD Ruby mailing list
> [email protected]
> http://groups.google.com/group/sdruby
>

-- 
SD Ruby mailing list
[email protected]
http://groups.google.com/group/sdruby

Reply via email to