class Formtastic::Inputs::AutocompleteInput

Public Instance Methods

to_html() click to toggle source
# File lib/formtastic/inputs/autocomplete_input.rb, line 6
def to_html
  input_wrapping do
    label_html <<
    builder.text_field(method, input_html_options) <<
    builder.hidden_field(method, hidden_html_options)
  end
end

Private Instance Methods

association() click to toggle source
# File lib/formtastic/inputs/autocomplete_input.rb, line 64
def association
  @association ||= begin
    association_name = method.to_s
    association_name.gsub!(/_id\z/, '')
    @builder.object.send(association_name.to_sym)
  end
end
hidden_html_options() click to toggle source
# File lib/formtastic/inputs/autocomplete_input.rb, line 27
def hidden_html_options
  {
      value: options.key?(:value) ? options[:value] : hidden_tag_value
  }
end
hidden_tag_value() click to toggle source
# File lib/formtastic/inputs/autocomplete_input.rb, line 52
def hidden_tag_value
  association.id if association
end
input_html_options() click to toggle source
Calls superclass method
# File lib/formtastic/inputs/autocomplete_input.rb, line 16
def input_html_options
  {
      class: 'autocomplete'
  }.merge(super).deep_merge(
      name:  '',
      id:    options.key?(:input_html) && options[:input_html].key?(:id) ? options[:input_html][:id] : input_tag_id,
      value: options.key?(:value) ? options[:value] : input_tag_value,
      data:  { source: options[:source] }
  )
end
input_tag_id() click to toggle source
# File lib/formtastic/inputs/autocomplete_input.rb, line 33
def input_tag_id
  "#{sanitized_object_name}_#{sanitized_method}_autocomplete"
end
input_tag_value() click to toggle source
# File lib/formtastic/inputs/autocomplete_input.rb, line 37
def input_tag_value
  return unless association

  if association.respond_to?(:label)
    association.label
  elsif association.respond_to?(:title)
    association.title
  elsif association.respond_to?(:name)
    association.name
  else
    warn "#{association.class} must respond to label, title, or name"
    nil
  end
end
sanitized_method() click to toggle source
# File lib/formtastic/inputs/autocomplete_input.rb, line 60
def sanitized_method
  @sanitized_method ||= method.to_s.sub(/\?$/, '')
end
sanitized_object_name() click to toggle source
# File lib/formtastic/inputs/autocomplete_input.rb, line 56
def sanitized_object_name
  @sanitized_object_name ||= object_name.to_s.gsub(/\]\[|[^-a-zA-Z0-9:.]/, '_').sub(/_$/, '')
end