Class: Formtastic::Inputs::AjaxSelect2Input

Inherits:
StringInput
  • Object
show all
Extended by:
ActiveSupport::Autoload
Defined in:
lib/formtastic/inputs/ajax_select2_input.rb

Instance Method Summary collapse

Instance Method Details

#extra_input_html_optionsObject



28
29
30
31
32
# File 'lib/formtastic/inputs/ajax_select2_input.rb', line 28

def extra_input_html_options
  {
      name: input_html_options_name
  }
end

#input_html_optionsObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/formtastic/inputs/ajax_select2_input.rb', line 4

def input_html_options
  url_params = {}
  url_params[:class_name] = options[:search_class] if options[:search_class].present?
  url_params[:search_method] = options[:search_method] if options[:search_method].present?
  url_params[:default_class_name] = options[:default_class_name] if options[:default_class_name].present?
  url_params[:default_text_column] = options[:default_text_column] if options[:default_text_column].present?
  url_params[:default_id_column] = options[:default_id_column] if options[:default_id_column].present?
  url_params[:select2_options] = options[:select2_options] if options[:select2_options].present?
  href = template.select2_autocompletes_path(url_params)
  input_options = {
      value: value
  }.merge(extra_input_html_options).merge(super)
  input_options[:data] = input_options[:data].to_h.merge({
      s2_href: href,
      s2_options: url_params[:select2_options].to_h.merge(multiple: multiple?)
  })
  css_classes = [input_options[:class], 'auto-ajax-select2', 'input-hol']
  if multiple?
    css_classes << 'multiple'
  end
  input_options[:class] = css_classes.compact.join(' ')
  input_options
end

#input_html_options_nameObject



43
44
45
46
47
48
49
# File 'lib/formtastic/inputs/ajax_select2_input.rb', line 43

def input_html_options_name
  if builder.options.key?(:index)
    "#{object_name}[#{builder.options[:index]}][#{association_primary_key}]"
  else
    "#{object_name}[#{association_primary_key}]"
  end
end

#multiple?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/formtastic/inputs/ajax_select2_input.rb', line 34

def multiple?
  multiple_by_options? || multiple_by_association?
end

#multiple_by_association?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/formtastic/inputs/ajax_select2_input.rb', line 51

def multiple_by_association?
  reflection && [ :has_many, :has_and_belongs_to_many ].include?(reflection.macro)
end

#multiple_by_options?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/formtastic/inputs/ajax_select2_input.rb', line 55

def multiple_by_options?
  options[:multiple] || (options[:input_html] && options[:input_html][:multiple])
end

#valueObject



38
39
40
41
# File 'lib/formtastic/inputs/ajax_select2_input.rb', line 38

def value
  val = object.send(association_primary_key)
  val.is_a?(Array) ? val.join(',') : val
end