module ActiveAdminAddons::SelectHelpers

Public Instance Methods

active_record_select?() click to toggle source
# File lib/activeadmin_addons/support/input_helpers/select_helpers.rb, line 52
def active_record_select?
  active_record_relation?(collection) &&
    active_record_relation?(selected_collection)
rescue NameError
  false
end
array_to_select_options() click to toggle source
# File lib/activeadmin_addons/support/input_helpers/select_helpers.rb, line 6
def array_to_select_options
  selected_values = input_value.is_a?(Array) ? input_value : input_value.to_s.split(",")
  array = collection.map(&:to_s) + selected_values
  array.sort.map do |value|
    option = { id: value, text: value }
    option[:selected] = "selected" if selected_values.include?(value)
    option
  end.uniq
end
collection_to_select_options() { |item, option| ... } click to toggle source
# File lib/activeadmin_addons/support/input_helpers/select_helpers.rb, line 28
def collection_to_select_options
  complete_collection = collection + selected_collection
  complete_collection.map do |item|
    option = item_to_select_option(item)
    yield(item, option) if block_given?

    if selected_collection.include?(item)
      load_data_attr(:selected, value: option.dup, formatter: :to_json)
      option[:selected] = "selected"
    end

    option
  end.uniq
end
initial_collection_to_select_options() click to toggle source
# File lib/activeadmin_addons/support/input_helpers/select_helpers.rb, line 16
def initial_collection_to_select_options
  initial_options = [[nil]] # add blank option
  selected = selected_item

  if selected
    selected_option = item_to_select_option(selected)
    initial_options << [selected_option[:text], selected_option[:id]]
  end

  initial_options
end
item_to_select_option(item) click to toggle source
# File lib/activeadmin_addons/support/input_helpers/select_helpers.rb, line 43
def item_to_select_option(item)
  return unless item

  {
    id: item.send((valid_options[:value] || :id)),
    text: item.send((valid_options[:display_name] || :name))
  }
end
selected_collection() click to toggle source
# File lib/activeadmin_addons/support/input_helpers/select_helpers.rb, line 59
def selected_collection
  @selected_collection ||= begin
    if active_record_relation?(collection)
      collection.model.where(id: input_value)
    else
      method_model.where(id: input_value)
    end
  end
end
selected_item() click to toggle source
# File lib/activeadmin_addons/support/input_helpers/select_helpers.rb, line 69
def selected_item
  @selected_item ||= begin
                       input_association_value
                     rescue NoMethodError
                       selected_collection.first
                     end
end

Private Instance Methods

active_record_relation?(value) click to toggle source
# File lib/activeadmin_addons/support/input_helpers/select_helpers.rb, line 79
def active_record_relation?(value)
  klass = value.class.name
  [
    "ActiveRecord::Relation",
    "ActiveRecord::Associations::CollectionProxy"
  ].include?(klass)
end
collection() click to toggle source
# File lib/activeadmin_addons/support/input_helpers/select_helpers.rb, line 93
def collection
  valid_options[:collection] || []
end
valid_options() click to toggle source
# File lib/activeadmin_addons/support/input_helpers/select_helpers.rb, line 87
def valid_options
  raise "missing @options hash" unless !!@options

  @options
end