module ActiveAdmin::Inputs::AjaxCore

Constants

DEFAULT_LIMIT

Public Instance Methods

ajax_data() click to toggle source
# File lib/active_admin/inputs/ajax_core.rb, line 26
def ajax_data
  options[:data] || {}
end
ajax_search_fields() click to toggle source
# File lib/active_admin/inputs/ajax_core.rb, line 50
def ajax_search_fields
  ajax_data[:ajax_search_fields]
end
collection_from_association() click to toggle source
Calls superclass method
# File lib/active_admin/inputs/ajax_core.rb, line 34
def collection_from_association
  super.try(:limit, collection_limit).try(:ransack, static_ransack).try(:result)
end
collection_limit() click to toggle source
# File lib/active_admin/inputs/ajax_core.rb, line 30
def collection_limit
  ajax_data[:limit] || DEFAULT_LIMIT
end
display_fields() click to toggle source
# File lib/active_admin/inputs/ajax_core.rb, line 42
def display_fields
  ajax_data[:display_fields] || search_fields.take(1)
end
input_html_options() click to toggle source
Calls superclass method
# File lib/active_admin/inputs/ajax_core.rb, line 10
def input_html_options
  super.merge(
    'data-limit' => collection_limit,
    'data-value-field' => value_field,
    'data-display-fields' => display_fields,
    'data-search-fields' => search_fields,
    'data-ajax-search-fields' => ajax_search_fields,
    'data-ordering' => ordering,
    'data-ransack' => ransack,
    'data-static-ransack' => static_ransack,
    'data-selected-value' => selected_value,
    'data-url' => url,
    'data-min-chars-count-to-request' => min_chars_count_to_request,
  )
end
min_chars_count_to_request() click to toggle source
# File lib/active_admin/inputs/ajax_core.rb, line 66
def min_chars_count_to_request
  ajax_data[:min_chars_count_to_request] || 1
end
ordering() click to toggle source
# File lib/active_admin/inputs/ajax_core.rb, line 54
def ordering
  ajax_data[:ordering] || "#{display_fields.first} ASC"
end
pluck_column() click to toggle source
# File lib/active_admin/inputs/ajax_core.rb, line 6
def pluck_column
  klass.reorder("#{method} asc").limit(collection_limit).uniq.pluck(method)
end
ransack() click to toggle source
# File lib/active_admin/inputs/ajax_core.rb, line 58
def ransack
  ajax_data[:ransack] || "#{ransackify(search_fields).join('_or_')}_cont"
end
ransackify(field_names) click to toggle source
# File lib/active_admin/inputs/ajax_core.rb, line 70
def ransackify(field_names)
  # Map fields refer to related tables user.name -> user_name
  field_names.map { |f| f.to_s.sub('.', '_') }
end
search_fields() click to toggle source
# File lib/active_admin/inputs/ajax_core.rb, line 46
def search_fields
  ajax_data[:search_fields] || raise(ArgumentError, 'search_fields in required')
end
selected_value() click to toggle source
# File lib/active_admin/inputs/ajax_core.rb, line 83
def selected_value
  if @object
    @object.try(:send, input_name)
  end
end
static_ransack() click to toggle source
# File lib/active_admin/inputs/ajax_core.rb, line 62
def static_ransack
  ajax_data.fetch(:static_ransack, {}).to_json
end
url() click to toggle source
# File lib/active_admin/inputs/ajax_core.rb, line 75
def url
  case (url = ajax_data[:url])
  when nil then "#{method.to_s.pluralize}/filter"
  when Symbol then Rails.application.routes.url_helpers.send(url)
  else url
  end
end
value_field() click to toggle source
# File lib/active_admin/inputs/ajax_core.rb, line 38
def value_field
  ajax_data[:value_field] || :id
end