Module: ActiveAdmin::Filters::ViewHelper

Defined in:
lib/active_admin/filters/forms.rb

Overview

This module is included into the view

Instance Method Summary collapse

Instance Method Details

#active_admin_filters_form_for(search, filters, options = {}) ⇒ Object

Helper method to render a filter form



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
92
# File 'lib/active_admin/filters/forms.rb', line 66

def active_admin_filters_form_for(search, filters, options = {})
  options[:builder] ||= ActiveAdmin::Filters::FormBuilder
  options[:url] ||= collection_path
  options[:html] ||= {}
  options[:html][:method] = :get
  options[:html][:class] ||= "filter_form"
  options[:as] = :q
  clear_link = link_to(I18n.t('active_admin.clear_filters'), "#", :class => "clear_filters_btn")
  form_for search, options do |f|
    filters.group_by{ |o| o[:attribute] }.each do |attribute, array|
      options      = array.last # grab last-defined `filter` call from DSL
      if_block     = options[:if]     || proc{ true }
      unless_block = options[:unless] || proc{ false }
      if call_method_or_proc_on(self, if_block) && !call_method_or_proc_on(self, unless_block)
        f.filter options[:attribute], options.except(:attribute, :if, :unless)
      end
    end

    buttons =  :div, :class => "buttons" do
      f.submit(I18n.t('active_admin.filter')) +
        clear_link +
        hidden_field_tags_for(params, :except => [:q, :page])
    end

    f.form_buffers.last + buttons
  end
end