Forum: Ruby on Rails Iterate through a table record

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
E6ca8d60933425082ea975f795654919?d=identicon&s=25 Bill McGuire (wjm)
on 2008-11-21 22:39
Hello...I've searched before posting but can't find anything. New and
need help.
I want to iterate through some fields in my database table and populate
a html table with their values.

As an example, lets say I have a table (named race) that holds
information on a relay race. I have fields leg1, leg2...leg36 that hold
the miles per leg. I want to be able to run through a loop from 1 to 36
and displays all the legs. I thought this would work:

<b>Name:</b>
  <%=h @race.name %>
.....

<tr>
 <% 36.times do |p| %>
     <td>Leg <%= @race.leg+p %></td>
 <% end %>
</tr>

But I can't combine @race.leg and p.
Is there a way to increment @race.leg so I don't have to write
@race.leg1 ...@race.leg36  ?

Any help appreciate - thanks!
...Bill
Fea04d08dff429eff6e81d25cf91b8d2?d=identicon&s=25 Lennart Koopmann (Guest)
on 2008-11-21 23:38
(Received via mailing list)
2008/11/21 Bill Mcguire <rails-mailing-list@andreas-s.net>

> Is there a way to increment @race.leg so I don't have to write
> @race.leg1 ...@race.leg36  ?
>

Can you change the database structure? I think it would make more sense
to
have a "legs" table in this case. Then you could lookup all legs of a
given
race and iterate through them with @legs.each

So long
Lennart Koopmann
E6ca8d60933425082ea975f795654919?d=identicon&s=25 Bill McGuire (wjm)
on 2008-11-21 23:59
Lennart Koopmann wrote:
> 2008/11/21 Bill Mcguire <rails-mailing-list@andreas-s.net>
>
>> Is there a way to increment @race.leg so I don't have to write
>> @race.leg1 ...@race.leg36  ?
>>
>
> Can you change the database structure? I think it would make more sense
> to
> have a "legs" table in this case. Then you could lookup all legs of a
> given
> race and iterate through them with @legs.each
>
> So long
> Lennart Koopmann

Lennart...interesting thought, problem is I'll still have the default
fields I have to deal with (created_at,updated_at, race_id)so it
wouldn't be a purely 'leg' table. I could filter that out I guess but I
want to try to make this work.
Thanks for the reply
53be54e5db4dc58e4980db5a8255621b?d=identicon&s=25 Harold (Guest)
on 2008-11-22 01:52
(Received via mailing list)
A legs table seems more flexible, however:

<tr>
 <% (1..36).each do |p| %>
     <td>Leg <%= @race.send(('leg' + p).to_sym) %></td>
 <% end %>
</tr>

On Nov 21, 5:59 pm, Bill McGuire <rails-mailing-l...@andreas-s.net>
E6ca8d60933425082ea975f795654919?d=identicon&s=25 Bill McGuire (wjm)
on 2008-11-22 04:52
Harold wrote:
> A legs table seems more flexible, however:
>
> <tr>
>  <% (1..36).each do |p| %>
>      <td>Leg <%= @race.send(('leg' + p).to_sym) %></td>
>  <% end %>
> </tr>
>
> On Nov 21, 5:59�pm, Bill McGuire <rails-mailing-l...@andreas-s.net>

Harold...worked just like I wanted. The only thing I had to do was add
'.to_s' after 'p'.
Thanks !
This topic is locked and can not be replied to.