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
|