Skip to content

Commit a74dfca

Browse files
committed
Merge branch 'master' of git://github.com/zpaulovics/ajax-datatables-rails into zpaulovics-master
Conflicts: lib/ajax-datatables-rails/base.rb
2 parents 2b17155 + bd669f8 commit a74dfca

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

lib/ajax-datatables-rails/base.rb

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,16 @@ def fetch_records
5252
records = get_raw_records
5353
records = sort_records(records)
5454
records = filter_records(records)
55-
records = paginate_records(records)
55+
records = paginate_records(records) unless params[:length] == '-1'
5656
records
5757
end
5858

5959
def sort_records(records)
60-
records.order("#{sort_column} #{sort_direction}")
60+
sort_by = []
61+
params[:order].each_value do |item|
62+
sort_by << "#{sort_column(item)} #{sort_direction(item)}"
63+
end
64+
records.order(sort_by.join(", "))
6165
end
6266

6367
def paginate_records(records)
@@ -74,7 +78,7 @@ def filter_records(records)
7478
end
7579

7680
def simple_search(records)
77-
return records unless (params[:search] && params[:search][:value])
81+
return records unless (params[:search].present? && params[:search][:value].present?)
7882
conditions = build_conditions_for(params[:search][:value])
7983
records = records.where(conditions) if conditions
8084
records
@@ -87,7 +91,11 @@ def composite_search(records)
8791
end
8892

8993
def build_conditions_for(query)
90-
searchable_columns.map { |col| search_condition(col, query) }.reduce(:or)
94+
search_for = query.split(' ')
95+
criteria = search_for.inject([]) do |criteria, atom|
96+
criteria << searchable_columns.map { |col| search_condition(col, atom) }.reduce(:or)
97+
end.reduce(:and)
98+
criteria
9199
end
92100

93101
def search_condition(column, value)
@@ -117,13 +125,13 @@ def per_page
117125
params.fetch(:length, 10).to_i
118126
end
119127

120-
def sort_column
121-
sortable_columns[params[:order]['0'][:column].to_i] if params[:order]
128+
def sort_column(item)
129+
sortable_columns[item['column'].to_i]
122130
end
123131

124-
def sort_direction
132+
def sort_direction(item)
125133
options = %w(desc asc)
126-
options.include?(params[:order]['0'][:dir]) ? params[:order]['0'][:dir].upcase : 'ASC' if params[:order]
134+
options.include?(item['dir']) ? item['dir'].upcase : 'ASC'
127135
end
128136
end
129137
end

0 commit comments

Comments
 (0)