lib/table_for/helper.rb
module TableHelper
# Simplest examle:
#
# <%= table_for @users do -%>
# <% columns :name, :email, :address %>
# <% end %>
#
# Simple examle:
#
# <%= table_for @users, :http => { :class => "simple-table", :id => "users" } do -%>
# <% column :name %>
# <% column :email %>
# <% column :address %>
# <% end %>
#
# More complex example:
#
# <%= table_for @users do -%>
# <% column :login, :title => "User name" %>
# <% column :email %>
# <% column :title => "Full name" do |user| %>
# <% [user.first_name, user.last_name].join(" ") %>
# <% end %>
# <% column :title => "Actions" do |user| %>
# <% link_to "Show", user %>
# <% link_to "Delete", user, :method => :delete %>
# <% end %>
# <% end %>
#
def table_for(records, *args, &proc)
raise ArgumentError, "Missing block" unless block_given?
options = args.extract_options!
raise ArgumentError, "Records should have #map method" unless records.respond_to?(:map)
t = Table.new(self, records, options)
t.instance_eval(&proc)
t.draw
end
end
ActionView::Base.class_eval do
include TableHelper
end