Module: RailsAutocomplete::FormtasticPlugin

Defined in:
lib/rails-autocomplete/formtastic_plugin.rb

Instance Method Summary collapse

Instance Method Details

#autocomplete_input(method, options = {}) ⇒ Object Also known as: autocompleted_input



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/rails-autocomplete/formtastic_plugin.rb', line 3

def autocomplete_input(method, options = {})
  if options.key?(:selected) || options.key?(:checked) || options.key?(:default)
    ::ActiveSupport::Deprecation.warn(
    "The :selected, :checked (and :default) options are deprecated in Formtastic and will be removed from 1.0. " <<
    "Please set default values in your models (using an after_initialize callback) or in your controller set-up. " <<
    "See http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html for more information.", caller)
  end

  options[:required] = method_required?(method) unless options.key?(:required)
  options[:as]     ||= "autocompleted_string"

  html_class = [ options[:as], (options[:required] ? :required : :optional) ]
  html_class << 'error' if @object && @object.respond_to?(:errors) && !@object.errors[method.to_sym].blank?

  wrapper_html = options.delete(:wrapper_html) || {}
  wrapper_html[:id]  ||= generate_html_id(method)
  wrapper_html[:class] = (html_class << wrapper_html[:class]).flatten.compact.join(' ')

  if options[:input_html] && options[:input_html][:id]
    options[:label_html] ||= {}
    options[:label_html][:for] ||= options[:input_html][:id]
  end

  input_parts = self.class.inline_order.dup
  input_parts = input_parts - [:errors, :hints] if options[:as] == :hidden

  list_item_content = input_parts.map do |type|
    send(:"inline_#{type}_for", method, options)
  end.compact.join("\n")

  return template.(:li, Formtastic::Util.html_safe(list_item_content), wrapper_html)
end