class SimpleForm::Inputs::AutocompleteCollectionInput

Public Instance Methods

input() click to toggle source
# File lib/rails3-jquery-autocomplete/simple_form_plugin.rb, line 41
def input
  # http://www.codeofficer.com/blog/entry/form_builders_in_rails_discovering_field_names_and_ids_for_javascript/
  hidden_id = "#{object_name}_#{attribute_name}_hidden".gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_").sub(/_$/, "")
  id_element = options[:id_element]
  if id_element
    id_element << ", #" << hidden_id
  else
    id_element = "#" + hidden_id
  end
  options[:id_element] = id_element
  autocomplete_options = rewrite_autocomplete_option
  #
  label_method, value_method = detect_collection_methods
  association = object.send(reflection.name)
  if association && association.respond_to?(label_method)
    autocomplete_options[:value] = association.send(label_method)
  end
  out = @builder.autocomplete_field(
    attribute_name,
    options[:url],
    autocomplete_options
  )
  hidden_options = if association && association.respond_to?(value_method)
    new_options = {}
    new_options[:value] = association.send(value_method)
    input_html_options.merge new_options
  else
    input_html_options
  end
  hidden_options[:id] = hidden_id
  out << @builder.hidden_field(
    attribute_name,
    hidden_options
  )
  out.html_safe
end