Module: SimpleSearchFilter::Controller::ClassMethods

Defined in:
lib/simple_search_filter/controller.rb

Instance Method Summary collapse

Instance Method Details

#search_filter(name, options = {}, &block) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/simple_search_filter/controller.rb', line 64

def search_filter(name, options = {}, &block)
  # raise "You need a block to build!" unless block_given?

  init_method = "init_search_filter_#{name.to_s}"

  define_method(init_method) do
    prefix = options[:prefix] || "filter_#{params[:controller]}_#{name}"

    # create Filter object
    @filter = SimpleSearchFilter::Filter.new(self.session, prefix, options)

    # define filter
    @filter.instance_eval(&block)

    # set data from params
    init_search_data(name)

  end

  # before_action callback
  self.before_action :"#{init_method}", only: [name.to_sym, options[:search_action]]


  #
  define_method("#{options[:search_action]}") do
    redirect_to action: name.to_sym
  end
end