Class: ActiveAdmin::Inputs::Filters::AjaxSelectInput
- Inherits:
-
SelectInput
- Object
- SelectInput
- ActiveAdmin::Inputs::Filters::AjaxSelectInput
- Defined in:
- lib/active_admin/inputs/filters/ajax_select_input.rb
Constant Summary collapse
- DEFAULT_LIMIT =
5
Instance Method Summary collapse
- #ajax_data ⇒ Object
- #collection_from_association ⇒ Object
- #collection_limit ⇒ Object
- #input_html_options ⇒ Object
- #ordering ⇒ Object
- #pluck_column ⇒ Object
- #ransack ⇒ Object
- #search_fields ⇒ Object
- #selected_value ⇒ Object
- #url ⇒ Object
- #value_field ⇒ Object
Instance Method Details
#ajax_data ⇒ Object
27 28 29 |
# File 'lib/active_admin/inputs/filters/ajax_select_input.rb', line 27 def ajax_data [:data] || {} end |
#collection_from_association ⇒ Object
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_limit ⇒ Object
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_options ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/active_admin/inputs/filters/ajax_select_input.rb', line 15 def 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 |
#ordering ⇒ Object
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_column ⇒ Object
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 |
#ransack ⇒ Object
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_fields ⇒ Object
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_value ⇒ Object
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 |
#url ⇒ Object
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_field ⇒ Object
35 36 37 |
# File 'lib/active_admin/inputs/filters/ajax_select_input.rb', line 35 def value_field ajax_data[:value_field] || :id end |