Class: ActiveAdmin::Filters::FormBuilder

Inherits:
ActiveAdmin::FormBuilder show all
Includes:
FormtasticAddons
Defined in:
lib/active_admin/filters/forms.rb

Overview

This form builder defines methods to build filter forms such as the one found in the sidebar of the index page of a standard resource.

Instance Attribute Summary

Attributes inherited from ActiveAdmin::FormBuilder

#form_buffers

Instance Method Summary collapse

Methods included from FormtasticAddons

#column, #column_for, #humanized_method_name, #klass, #polymorphic_foreign_type?, #reflection_for

Methods inherited from ActiveAdmin::FormBuilder

#action, #actions, #cancel_link, #commit_action_with_cancel_link, #field_set_and_list_wrapping, #has_many, #input, #input_class, #inputs, #semantic_errors

Methods included from ActiveAdmin::FormBuilder::DeprecatedMethods

#buttons, #commit_button, #commit_button_with_cancel_link

Constructor Details

#initialize(*args) ⇒ FormBuilder

Returns a new instance of FormBuilder.



9
10
11
12
# File 'lib/active_admin/filters/forms.rb', line 9

def initialize(*args)
  @use_form_buffer = true # force ActiveAdmin::FormBuilder to use the form buffer
  super
end

Instance Method Details

#active_admin_input_class_name(as) ⇒ Object (protected)



46
47
48
# File 'lib/active_admin/filters/forms.rb', line 46

def active_admin_input_class_name(as)
  "ActiveAdmin::Inputs::Filter#{as.to_s.camelize}Input"
end

#custom_input_class_name(as) ⇒ Object (protected)



42
43
44
# File 'lib/active_admin/filters/forms.rb', line 42

def custom_input_class_name(as)
  "Filter#{as.to_s.camelize}Input"
end

#default_input_type(method, options = {}) ⇒ Object (protected)

Returns the default filter type for a given attribute



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/active_admin/filters/forms.rb', line 23

def default_input_type(method, options = {})
  if method =~ /_(contains|starts_with|ends_with)\z/
    :string
  elsif reflection_for(method) || polymorphic_foreign_type?(method)
    :select
  elsif column = column_for(method)
    case column.type
    when :date, :datetime
      :date_range
    when :string, :text
      :string
    when :integer, :float, :decimal
      :numeric
    when :boolean
      :boolean
    end
  end
end

#filter(method, options = {}) ⇒ Object



14
15
16
17
18
# File 'lib/active_admin/filters/forms.rb', line 14

def filter(method, options = {})
  if method.present? && options[:as] ||= default_input_type(method)
    input(method, options)
  end
end