Fixing massive typo:
<%
headers = [
["Summary", "summary"],
["Term", "term"],
["Start Date", "start_date"]
]
%>
<table>
<% headers.each do |header| %>
<tr>
<th><% header[0] %></th>
<% @colletion.each do |item| %>
<td><%= item.send(header[1]) %></td>
<% end %>
</tr>
<% end %>
</table>
On Monday, September 17, 2012 at 12:04 PM, James Miller 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]
> > (mailto:[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]
> > > > (mailto:[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] (mailto:[email protected])
> > > > > http://groups.google.com/group/sdruby
> > > > --
> > > > SD Ruby mailing list
> > > > [email protected] (mailto:[email protected])
> > > > http://groups.google.com/group/sdruby
> > >
> > > --
> > > SD Ruby mailing list
> > > [email protected] (mailto:[email protected])
> > > http://groups.google.com/group/sdruby
> > --
> > SD Ruby mailing list
> > [email protected] (mailto:[email protected])
> > http://groups.google.com/group/sdruby
>
--
SD Ruby mailing list
[email protected]
http://groups.google.com/group/sdruby