Class: SimpleFormExtension::Inputs::SelectizeInput

Inherits:
SimpleForm::Inputs::Base
  • Object
show all
Includes:
Translations
Defined in:
lib/simple_form_extension/inputs/selectize_input.rb

Instance Method Summary collapse

Methods included from Translations

#_translate

Instance Method Details

#collectionObject



50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/simple_form_extension/inputs/selectize_input.rb', line 50

def collection
  if (collection = options[:collection])
    if enumerable?(collection)
      collection.map(&method(:serialize_option))
    else
      (object.send(collection) || []).map(&method(:serialize_option))
    end
  elsif relation?
    reflection.klass.all.map(&method(:serialize_option))
  else
    []
  end
end

#creatable?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/simple_form_extension/inputs/selectize_input.rb', line 33

def creatable?
  !!options[:creatable]
end

#input(wrapper_options = {}) ⇒ Object

This field only allows local select options (serialized into JSON) Searching for remote ones will be implemented later.

Data attributes that may be useful :

:'search-url' => search_url,
:'search-param' => search_param,
:'preload' => preload,


15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/simple_form_extension/inputs/selectize_input.rb', line 15

def input(wrapper_options = {})
  @attribute_name = foreign_key if relation?
  input_html_options[:data] ||= {}

  input_html_options[:data].merge!(
    :'selectize' => true,
    :'value' => serialized_value,
    :'creatable' => creatable?,
    :'multi' => multi?,
    :'add-translation' => _translate('selectize.add'),
    :'collection' => collection,
    :'max-items' => max_items,
    :'sort-field' => sort_field
  )

  @builder.hidden_field attribute_name, input_html_options
end

#max_itemsObject



42
43
44
# File 'lib/simple_form_extension/inputs/selectize_input.rb', line 42

def max_items
  options[:max_items]
end

#multi?Boolean

Returns:

  • (Boolean)


37
38
39
40
# File 'lib/simple_form_extension/inputs/selectize_input.rb', line 37

def multi?
  (options.key?(:multi) && !!options[:multi]) ||
    enumerable?(value)
end

#serialized_valueObject



64
65
66
67
68
69
70
71
72
# File 'lib/simple_form_extension/inputs/selectize_input.rb', line 64

def serialized_value
  if multi?
    value.map do |item|
      { text: item, value: item }
    end
  else
    value && { text: value, value: value }
  end
end

#sort_fieldObject



46
47
48
# File 'lib/simple_form_extension/inputs/selectize_input.rb', line 46

def sort_field
  options[:sort_field] ||= 'text'
end

#valueObject



74
75
76
# File 'lib/simple_form_extension/inputs/selectize_input.rb', line 74

def value
  @value ||= options_fetch(:value) { object.send(attribute_name) }
end