lib/data_tables.rb in data_tables-0.1.16 vs lib/data_tables.rb in data_tables-0.1.17
- old
+ new
@@ -44,10 +44,11 @@
scope = options[:scope] || :domain
named_scope = options[:named_scope]
named_scope_args = options[:named_scope_args]
except = options[:except] || []
es_block = options[:es_block]
+ order_sort = options[:order_sort]
#
# ------- Ohm ----------- #
#
if modelCls < Ohm::Model
@@ -302,17 +303,23 @@
total_records = modelCls.count :conditions => init_conditions.join(" AND ")
total_display_records = modelCls.count :conditions => conditions.join(" AND ")
end
sort_column = params[:iSortCol_0].to_i
current_page = (params[:iDisplayStart].to_i/params[:iDisplayLength].to_i rescue 0)+1
+ order = if order_sort.respond_to?(:call)
+ order_sort.call(columns[sort_column][:name], params[:sSortDir_0])
+ else
+ "#{columns[sort_column][:name]} #{params[:sSortDir_0]}"
+ end
+
if named_scope
objects = modelCls.send(named_scope, *args).paginate(:page => current_page,
- :order => "#{columns[sort_column][:name]} #{params[:sSortDir_0]}",
+ :order => order,
:conditions => conditions.join(" AND "),
:per_page => params[:iDisplayLength])
else
objects = modelCls.paginate(:page => current_page,
- :order => "#{columns[sort_column][:name]} #{params[:sSortDir_0]}",
+ :order => order,
:conditions => conditions.join(" AND "),
:per_page => params[:iDisplayLength])
end
#logger.info("------conditions is #{conditions}")
data = objects.collect do |instance|