, etc.)
A basic example would look like this:
@front_men = [FrontMan.new(1, 'David St. Hubbins'), FrontMan.new(2, 'David Lee Roth')]
<% table_for(@front_men) do |t| %>
<% t.head do %>
<% t.r do %>
<%= t.h('Id') %>
<%= t.h('Name') %>
<% end %>
<% end %>
<% t.body do |front_man| %>
<% t.r do %>
<%= t.d(h(front_man.id)) %>
<%= t.d(h(front_man.name)) %>
<% end %>
<% end %>
<% end %>
You can pass an array to the head method:
<%= t.head('Id', 'Name') %>
The body and r method can be combined for easier usage:
<% t.body_r do |front_man| %>
<%= t.d(h(front_man.id)) %>
<%= t.d(h(front_man.name)) %>
<% end %>
You can also pass blocks to the d and h methods for more flexibility:
<%= t.d(:class => 'name') do %>
<%= link_to(h(front_man.name), front_man_url(front_man)) %>
<% end %>
All tag methods are rails tag methods, so they can have extra html options.
@drummers = [Drummer.new(1, 'John "Stumpy" Pepys'), Drummer.new(2, 'Eric "Stumpy Joe" Childs')]
<% table_for(@drummers, :html => { :id => 'spinal_tap', :class => 'drummers'}) do |t| %>
<% t.body_r(:class => 'row') do |e| %>
<%= t.d(h(e.id), :title => 'id') %>
<%= t.d(h(e.name)) %>
<% end %>
<% end %>
... which produces the following html:
1 | John "Stumpy" Pepys | 2 | Eric "Stumpy Joe" Childs |
You can customize the table by creating your own TableBuilder:
<% table_for(@drummers, :builder => PagedTableBuilder) do |t| %>
== Calendar Table
calendar_for creates a table like table_for.
All objects get sorted per day of the month
A basic example would look like this:
@tasks = Task.this_month
<% calendar_for(@tasks) do |t| %>
<%= t.head('mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun') %>
<% t.day do |day, tasks| %>
<%= day.day %>
<% tasks.each do |task| %>
<%= h(task.name) %>
<% end %>
<% end %>
<% end %>
To show a different month you can pass the :year and :month options:
<% calendar_for(@tasks, :year => 2009, :month => 1) do |t| %>
To highlight a different day you can pass the :today option:
<% calendar_for(@tasks, :today => Date.civil(2008, 12, 26)) do |t| %>
By default the :date method is called on the objects for sorting.
To use another method you can pass the :day_method option:
<% t.day(:day_method => :calendar_date) do |day, tasks| %>
If you want to add id's to your td tag you can pass a pattern:
<% t.day(:id => 'day_%d') do |day, tasks| %>
== Install
$ [sudo] gem install table_builder
== Contributors
Thanks to Sean Dague.
Copyright (c) 2008 Petrik de Heus, released under the MIT license |