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



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/simple_form_extension/inputs/selectize_input.rb', line 44

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

#creatable?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/simple_form_extension/inputs/selectize_input.rb', line 31

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
# File 'lib/simple_form_extension/inputs/selectize_input.rb', line 15

def input(wrapper_options = {})
  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
  )

  @builder.hidden_field attribute_name, input_html_options
end

#max_itemsObject



40
41
42
# File 'lib/simple_form_extension/inputs/selectize_input.rb', line 40

def max_items
  options[:max_items]
end

#multi?Boolean

Returns:

  • (Boolean)


35
36
37
38
# File 'lib/simple_form_extension/inputs/selectize_input.rb', line 35

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

#serialized_valueObject



56
57
58
59
60
61
62
63
64
# File 'lib/simple_form_extension/inputs/selectize_input.rb', line 56

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

#valueObject



66
67
68
# File 'lib/simple_form_extension/inputs/selectize_input.rb', line 66

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