Skip to content

danengle/awesome_tables

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AwesomeTables

This rails gem is used to easily display, consistently styled tables. It is still very much a work in progress.

Installation is simple.

gem install awesome_tables
# copy the base template to app/views/awesome_tables/_base.html.erb
rails g awesome_tables

Example

In order to use an awesome_table, first you must register it in a helper. Two examples are below.

AwesomeTables.register :posts do |t|
  t.set_caption "Posts"
  t.column :published_at, :display_published_at
  t.column :post, :partial => 'awesome_tables/posts/body'
  t.column :comment_count, :comment_counter, :header_image => 'comment-grey-bubble.png'
end

AwesomeTables.register :users do |t|
  t.set_caption "Users"
  t.column :full_name
  t.column :login
  t.column :email
  t.column :state
end

Now you can use them in your views

<%= awesome_table :users, @users %>
<%= awesome_table :posts, @posts %>

There are currently 4 different ways to declare a column.

  1. t.column(:method) A plain td can be created by passing in an object attribute. The header will be a titlized version of the method name.

  2. t.column(:header_text, :method) If you want the header text to be different than the method.

  3. t.column(:header_text, :partial => ‘path/to/partial) If your td data is more complex than a method name, add a partial option.

  4. You can pass a block to the call to column. I couldn’t figure out how to get rails helpers to call correctly when defined inside the block so ‘c’ is a reference to allow you to use view helpers

t.column :full_name do |obj, c| obj.full_name +

	c.content_tag(:div, :class => 'actions') do
  	c.link_to("Edit", c.edit_admin_user_path(obj))
	end

end

The :header_image option will use the image as the column header instead header text. That code and the way it is used needs some attention. Things have changed a little bit since I put that in there.

You’ll need to make sure that you create an awesome tables view folder. There is a base example table contained in lib/app/views/awesome_tables.

TODO

  • tests, tests, tests

  • figure out how to change the templates so that they don’t have column loops inside of the object loop

  • add more and better options support. Currently there is only a :class (and :header_image) option for columns and the way the :class option is implemented looks nasty.

  • create different formatters so awesome_tables can be used to output tables in formats other than html tables.

Copyright © 2010 Dan Engle, released under the MIT license

About

make awesome tables

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages