module ActiveScaffold::Bridges::Ancestry::FormColumnHelpers

Public Instance Methods

active_scaffold_input_ancestry(column, options, ui_options: column.options) click to toggle source
# File lib/active_scaffold/bridges/ancestry/ancestry_bridge.rb, line 18
def active_scaffold_input_ancestry(column, options, ui_options: column.options)
  record = options[:object]
  select_options = []
  select_control_options = {:selected => record.parent_id}
  select_control_options[:include_blank] = as_(:_select_) if record.parent_id.nil?
  method = ui_options[:label_method] || :to_label
  traverse_ancestry = proc do |key, value|
    unless key == record
      select_options << ["#{'__' * key.depth}#{key.send(method)}", key.id]
      value.each(&traverse_ancestry) if value.is_a?(Hash) && !value.empty?
    end
  end
  record.class.arrange.each(&traverse_ancestry)
  select(:record, :ancestry, select_options, select_control_options, options)
end