= Data Table
Makes it easy to ship data to a jQuery DataTable from ActiveRecord or Mongoid.
== Quick example:
in your javascript:
$(".providers-data-table").dataTable({"bJQueryUI" : true,
"bProcessing" : true,
"bAutoWidth" : false,
"sPaginationType" : "full_numbers",
"aoColumns" : [{"sType" : "html"}, null, null, null, null],
"aaSorting" : [[0, 'asc'], [1, 'asc']],
"bServerSide" : true,
"sAjaxSource" : "/providers.json" }).fnSetFilteringDelay();
Note: the fnSetFilteringDelay() call isn't required but highly recommended: http://datatables.net/plug-ins/api#fnSetFilteringDelay
in your controller:
class ProvidersController < ApplicationController
def index
respond_to do |wants|
wants.html
wants.json do
render(:json => Provider.for_data_table(self, %w(name fein categories.name county state), %w(name fein)) do |provider|
["<%= link_to(provider, provider) %>", provider.fein, provider.category.name, provider.county, provider.state]
end)
end
end
end
end
in your view (assuming HAML):
%table.providers-data-table
%thead
%tr
%th Name
%th FEIN
%th Category
%th County
%th State
%tbody
and in your Gemfile
for ActiveRecord
gem "will_paginate"
for Mongoid
gem "kaminari"
If using Mongoid add this to your model
include Mongoid::DataTable
== Advanced Features
=== Date fields
In order to handle date fields properly, enclose the field name in an array along with a hash like so:
Provider.for_data_table(self, %w(name fein opened_on), ["name", "fein", ["opened_on", {:date => true}]]) { ... }
=== Split fields
To handle split fields, that is to handle searching for "x-y", add a hash with a split key:
Provider.for_data_table(self, %w(name fein suffix), ["name", ["fein", "suffix", {:split => "-"}]]) { ... }
== Copyright
Copyright (c) 2010-2011 Jason Dew. See LICENSE for details.