Module: SearchSortPaginate::Controller
- Defined in:
- lib/search_sort_paginate/controller.rb
Instance Method Summary collapse
- #paginate(relation, params, opts = {}) ⇒ Object
- #search(params, relation, opts = {}) ⇒ Object
- #search_sort_paginate(params, relation, artificial_attributes = {}, opts = {}) ⇒ Object
- #sort(params, relation, artificial_attributes, opts = {}) ⇒ Object
Instance Method Details
#paginate(relation, params, opts = {}) ⇒ Object
21 22 23 24 25 |
# File 'lib/search_sort_paginate/controller.rb', line 21 def paginate( relation, params, opts = {}) page_number = params[:page] || 1 page_size = params[:page_size] || 8 relation.page( page_number ).per( page_size ) end |
#search(params, relation, opts = {}) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/search_sort_paginate/controller.rb', line 9 def search( params, relation, opts = {} ) search = params[:search] if search.present? searchable_fields = relation.klass.searchable_fields || [] if searchable_fields.present? search_sql = searchable_fields.map{|s_f| ActiveRecord::Base.send(:sanitize_sql_array,["#{s_f} LIKE ?", "%#{search}%"]) }.join(' || ') relation = relation.where(search_sql) end end relation end |
#search_sort_paginate(params, relation, artificial_attributes = {}, opts = {}) ⇒ Object
3 4 5 6 7 |
# File 'lib/search_sort_paginate/controller.rb', line 3 def search_sort_paginate( params, relation, artificial_attributes = {}, opts = {} ) relation = search( params, relation, opts ) relation = sort( params, relation, artificial_attributes, opts ) relation = paginate( relation, params, opts ) end |
#sort(params, relation, artificial_attributes, opts = {}) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/search_sort_paginate/controller.rb', line 27 def sort( params, relation, artificial_attributes, opts = {} ) column = params[:sort] if column && artificial_attributes[column.to_sym].present? column = artificial_attributes[column.to_sym] end direction = params[:direction] if column && direction relation.order(column + ' ' + direction) else relation end end |