Class: RoleModelTables::FilterView

Inherits:
Object
  • Object
show all
Defined in:
lib/rolemodel_tables/models/filter_view.rb

Overview

Parent class for all filter views.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(scoped_collection) ⇒ FilterView

Returns a new instance of FilterView.



9
10
11
# File 'lib/rolemodel_tables/models/filter_view.rb', line 9

def initialize(scoped_collection)
  @scoped_collection = scoped_collection
end

Instance Attribute Details

#ransackObject (readonly)

Returns the value of attribute ransack.



7
8
9
# File 'lib/rolemodel_tables/models/filter_view.rb', line 7

def ransack
  @ransack
end

Class Method Details

.advanced_filter(ransack_matcher, klass_name, form_options = {}) ⇒ Object



21
22
23
24
# File 'lib/rolemodel_tables/models/filter_view.rb', line 21

def self.advanced_filter(ransack_matcher, klass_name, form_options = {})
  self.advanced_filters ||= {}
  self.advanced_filters[ransack_matcher] = "RoleModelTables::Filters::#{klass_name}".constantize.new(ransack_matcher, form_options)
end

.default_sort(sort_option) ⇒ Object



13
14
15
# File 'lib/rolemodel_tables/models/filter_view.rb', line 13

def self.default_sort(sort_option)
  self.default_sort = sort_option
end

.quick_search(ransack_matcher) ⇒ Object



17
18
19
# File 'lib/rolemodel_tables/models/filter_view.rb', line 17

def self.quick_search(ransack_matcher)
  self.quick_search = ransack_matcher
end

Instance Method Details

#advanced_filtersObject



26
27
28
29
30
31
# File 'lib/rolemodel_tables/models/filter_view.rb', line 26

def advanced_filters
  self.class.advanced_filters.map do |_, filter_instance|
    filter_instance.filter = self
    filter_instance
  end
end

#search(params) ⇒ Object



33
34
35
36
37
# File 'lib/rolemodel_tables/models/filter_view.rb', line 33

def search(params)
  @ransack = @scoped_collection.ransack(params[:query])
  @ransack.sorts = default_sort if @ransack.sorts.empty?
  @ransack.result.page(params[:page])
end