On May 13, 2010, at 2:51 PM, Jian Lin wrote:
> Philip Hallstrom wrote:
>>> <%= "<td>#{h i}</td>\n" %>
>>> <% end %>
>>> <%= "</tr>\n" %>
>>> <% end %>
>>
>> @stories.attributes....
>>
>> http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M002348
>>
>> -philip
>
> Great thanks.
>
> So I have come up something like this:
>
> the row == 1 check is to print the header
>
> <style>
> table { border-collapse: collapse }
> td, th { border: 1px solid #ccc; padding: 0.33em }
> th { background: #eee }
> </style>
>
> <%= "<table>\n" %>
> <% row = 1 %>
> <% @all_stories.each do |s| %>
> <% if row == 1 %>
> <%= "<tr>" %>
> <% s.attributes.each do |i| %>
> <% p i %>
> <%= "<th>#{h i[0]}</th>\n" %>
> <% end %>
> <%= "</tr>\n" %>
> <% end %>
>
> <%= "<tr>" %>
> <% s.attributes.each do |i| %>
> <% p i %>
> <%= "<td>#{h i[1]}</td>\n" %>
> <% end %>
> <%= "</tr>\n" %>
>
> <% row += 1 %>
> <% end %>
>
> <%= "</table>\n" %>
>
>
> it might be better if the internal loop counter can be used for looping
> @all_stories so that now extra local variable "row" is needed.
I'm not sure that attributes() returns an ordered hash. That is, for each
iteration you might get the fields in a different order. You should check that.
> also, the use of i[0], i[1] seems a little less structured than if
> i.attr_name, i.attr_value can be used.
look into "s.attributes.each_pair |k,v|"
> the row == 1 situation also seems like somewhat not adhering to DRY.
You could consider using Story.column_names to print out the header and then
using that to loop through and print out each object's attributes...
-philip
--
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.