public
Description: Rails builder for creating tables and calendars inspired by ActionView's FormBuilder.
Homepage:
Clone URL: git://github.com/p8/table_builder.git
name age message
file .autotest Fri Mar 13 02:03:09 -0700 2009 Added autotest mapping [p8]
file MIT-LICENSE Mon Nov 03 08:13:23 -0800 2008 first commit [p8]
file README.rdoc Sun May 31 23:28:21 -0700 2009 Updated doucmentation [p8]
file Rakefile Mon Nov 03 08:13:23 -0800 2008 first commit [p8]
file init.rb Fri Jan 30 07:17:58 -0800 2009 Added calendar helper to init [p8]
file install.rb Mon Nov 03 08:13:23 -0800 2008 first commit [p8]
directory lib/ Sun May 31 23:26:16 -0700 2009 Added id_pattern to calendar day [p8]
directory tasks/ Mon Nov 03 08:13:23 -0800 2008 first commit [p8]
directory test/ Sun May 31 23:26:16 -0700 2009 Added id_pattern to calendar day [p8]
file uninstall.rb Mon Nov 03 08:13:23 -0800 2008 first commit [p8]
README.rdoc

TableBuilder

Rails builder for creating tables and calendars inspired by ActionView’s FormBuilder.

Examples

table_for has methods for each tag used in a table (<table>, <thead> <tr>, <td>, 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:

  <table class="drummers" id="spinal_tap">
    <tbody>
      <tr class="row">
        <td title="id">1</td>
        <td>John &quot;Stumpy&quot; Pepys</td>
      </tr>
      <tr class="row">
        <td title="id">2</td>
        <td>Eric &quot;Stumpy Joe&quot; Childs</td>
      </tr>
    </tbody>
  </table>

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

script/plugin install git://github.com/p8/table_builder.git

If you get the following error:

   ActionView::TemplateError (wrong number of arguments (1 for 2))

You can try an older pre rails 2.2 table_builder:

  cd vendor/plugins/table_builder/
  git checkout pre-rails-2.2

Contributors

Thanks to Sean Dague.

Copyright © 2008 Petrik de Heus, released under the MIT license