Module: DataTable::ClassMethods

Defined in:
lib/data_table/base.rb

Instance Method Summary collapse

Instance Method Details

#for_data_table(controller, fields, search_fields = nil, explicit_block = nil, &implicit_block) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/data_table/base.rb', line 9

def for_data_table controller, fields, search_fields=nil, explicit_block=nil, &implicit_block
  incoming_params = if controller.params.respond_to?(:permit) then
                      controller.params.permit(:sSearch, :sEcho, :iDisplayStart, :iDisplayLength, :iSortCol_0, :sSortDir_0)
                    else
                      controller.params
                    end
  params = Hash[*incoming_params.to_h.map {|key, value| [key.to_s.downcase.to_sym, value] }.flatten]
  search_fields ||= fields
  block = (explicit_block or implicit_block)

  objects = _find_objects params, fields, search_fields
  matching_count = objects.respond_to?(:total_entries) ? objects.total_entries : _matching_count(params, search_fields)

  {:sEcho                => params[:secho].to_i,
   :iTotalRecords        => self.count,
   :iTotalDisplayRecords => matching_count,
   :aaData               => _yield_and_render_array(controller, objects, block)
  }.to_json.html_safe
end