Skip to content

caseproof/datatables

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Datatables is a Rails 3 plugin that enables the easy creation of dynamic datatable views on top of any ActiveRecord model. Datatables provides a simple helper that can be utilized in the view to automatically display a dynamic view on top of a model. Datatables handles the entire front end and backend support to do this.

To install datatables to your rails project, follow these simple steps:

gem 'datatables', :git => 'git://github.com/Caseproof/datatables.git'
<%= stylesheet_link_tag "datatable_page" %>
<%= stylesheet_link_tag "datatable_table" %>
<%= javascript_include_tag 'jquery.dataTables.min' %>
module ApplicationHelper
  include Datatables::Helpers
end

With datatables it’s easy to add rich datatables to your views that correspond with your active record models.

There is a lovely helper that you can use to render your datatable that takes in a whole host of options. Unfortunately, there’s still quite a bit of work to do with these options to handle every scenario but here’s what it support so far:

The following examples will use the following database table:

mysql> desc companies;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int(11)      | NO   | PRI | NULL    | auto_increment |
| name        | varchar(255) | YES  | MUL | NULL    |                |
| slug        | varchar(255) | YES  | MUL | NULL    |                |
| domain      | varchar(255) | YES  | MUL | NULL    |                |
| category_id | int(11)      | NO   | MUL | NULL    |                |
| created_at  | datetime     | YES  |     | NULL    |                |
| updated_at  | datetime     | YES  |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+

The first argument to the datatable helper is the name of the model or an array of model & scope. The second argument is a hash of column names & options.

<%= datatable('company', { :name => { :type => 'string', 
                                      :label => 'Name',
                                      :width => '20%' },
                           :slug => { :type => 'string',
                                      :label => 'Slug',
                                      :width => '15%' },
                           :domain => { :type => 'string',
                                        :label => 'Domain',
                                        :width => '15%' }
                         }) %>

Note that the edit link path utilizes the :id field in the database table to automatically insert the correct id on a row by row basis:

<%= datatable('company', { :id => { :type => 'hidden' },
                           :name => { :type => 'link', 
                                          :label => 'Name', 
                                          :link => edit_admin_company_path(:id),
                                          :replace => 'id',
                                          :width => '50%' },
                           :slug => { :type => 'string',
                                      :label => 'Slug',
                                      :width => '25%' },
                           :domain => { :type => 'string',
                                        :label => 'Domain',
                                        :width => '25%' }
                         }) %>
<%= datatable(['company','dot_org_domains'], { :id => { :type => 'hidden' },
                                               :name => { :type => 'link', 
                                                              :label => 'Name', 
                                                              :link => edit_admin_company_path(:id),
                                                              :replace => 'id',
                                                              :width => '50%' },
                                               :slug => { :type => 'string',
                                                          :label => 'Slug',
                                                          :width => '25%' },
                                               :domain => { :type => 'string',
                                                            :label => 'Domain',
                                                            :width => '25%' }
                                             }) %>
<%= datatable(['company','dot_org_domains'], { :id => { :type => 'hidden' },
                                               :name => { :type => 'link', 
                                                              :label => 'Name', 
                                                              :link => edit_admin_company_path(:id),
                                                              :replace => 'id',
                                                              :width => '40%' },
                                               :slug => { :type => 'string',
                                                          :label => 'Slug',
                                                          :width => '20%' },
                                               :domain => { :type => 'string',
                                                            :label => 'Domain',
                                                            :width => '20%' },
                                               :category_name => { :type => 'string',
                                                                   :label => 'Category',
                                                                   :column => 'categories.name',
                                                                   :width => '20%',
                                                                   :class => 'center' }

                                             }) %>

It is the easiest way to integrate dynamic datatables using the jQuery datatables plugin into your rails app.

  • Version 1.0.0

    • First Release

If you’ve got some ideas for datatables let me know and, even better, if you’ve made some enhancements to the code send me a pull request!

Bug report? Faulty/incomplete documentation? Feature request? Please post an issue on ‘github.com/Caseproof/metafy/issues’. If its urgent, please contact me from my website at ‘blairwilliams.com/contact

Copyright © 2004-2011 Caseproof, LLC, released under the MIT license

About

Datatables is a Rails 3 plugin that enables the easy creation of dynamic datatable views on top of any ActiveRecord model

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages