Class: ActiveAdmin::Inputs::Filters::AjaxSelectInput

Inherits:
SelectInput
  • Object
show all
Defined in:
lib/active_admin/inputs/filters/ajax_select_input.rb

Constant Summary collapse

DEFAULT_LIMIT =
5

Instance Method Summary collapse

Instance Method Details

#ajax_dataObject



27
28
29
# File 'lib/active_admin/inputs/filters/ajax_select_input.rb', line 27

def ajax_data
  options[:data] || {}
end

#collection_from_associationObject



11
12
13
# File 'lib/active_admin/inputs/filters/ajax_select_input.rb', line 11

def collection_from_association
  super.limit(collection_limit)
end

#collection_limitObject



31
32
33
# File 'lib/active_admin/inputs/filters/ajax_select_input.rb', line 31

def collection_limit
  ajax_data[:limit] || DEFAULT_LIMIT
end

#input_html_optionsObject



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/active_admin/inputs/filters/ajax_select_input.rb', line 15

def input_html_options
  super.merge(
    'data-limit' => collection_limit,
    'data-value-field' => value_field,
    'data-search-fields' => search_fields,
    'data-ordering' => ordering,
    'data-ransack' => ransack,
    'data-selected-value' => selected_value,
    'data-url' => url,
  )
end

#orderingObject



43
44
45
# File 'lib/active_admin/inputs/filters/ajax_select_input.rb', line 43

def ordering
  ajax_data[:ordering] || "#{search_fields.first} ASC"
end

#pluck_columnObject



7
8
9
# File 'lib/active_admin/inputs/filters/ajax_select_input.rb', line 7

def pluck_column
  klass.reorder("#{method} asc").limit(collection_limit).uniq.pluck(method)
end

#ransackObject



47
48
49
# File 'lib/active_admin/inputs/filters/ajax_select_input.rb', line 47

def ransack
  ajax_data[:ransack] || "#{search_fields.join('_or_')}_cont"
end

#search_fieldsObject



39
40
41
# File 'lib/active_admin/inputs/filters/ajax_select_input.rb', line 39

def search_fields
  ajax_data[:search_fields] || raise(ArgumentError, 'search_fields in required')
end

#selected_valueObject



55
56
57
58
59
# File 'lib/active_admin/inputs/filters/ajax_select_input.rb', line 55

def selected_value
  if @object
    @object.try(:send, input_name)
  end
end

#urlObject



51
52
53
# File 'lib/active_admin/inputs/filters/ajax_select_input.rb', line 51

def url
  ajax_data[:url] || "#{method.to_s.pluralize}/filter"
end

#value_fieldObject



35
36
37
# File 'lib/active_admin/inputs/filters/ajax_select_input.rb', line 35

def value_field
  ajax_data[:value_field] || :id
end