Module: SexyAutoComplete::Helper

Defined in:
lib/sexy_auto_complete/helper.rb

Instance Method Summary collapse

Instance Method Details

#auto_complete_for(record_name, column_name, target_options = {}, suggest_options = {}, trigger_options = {}) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/sexy_auto_complete/helper.rb', line 3

def auto_complete_for(record_name, column_name, target_options = {}, suggest_options = {}, trigger_options = {})
  record     = instance_variable_get("@#{record_name}")
  model_name = record.class.name.demodulize.underscore
  controller = target_options.delete(:controller) || model_name
  action     = target_options.delete(:action) || "auto_complete_#{column_name}"
  field_name = target_options.delete(:name) || column_name

  # target
  target_id = field_name.gsub(/\[|\]/, '_')
  options   = {:name=>field_name, :id=>target_id, :class=>"#{column_name}-input", :size=>20}.merge(trigger_options)
  target    = input(record_name, column_name, options)

  # suggest
  options     = {:id=>"#{target_id}_auto_complete", :class=>"auto_complete", :style=>"width:400px;"}.merge(suggest_options)
  suggest     = ('div', '', options)

  # trigger
  url = {:controller=>controller, :action=>action, :id=>target_id, :path=>field_name}
  options = {:url=>url, :min_chars=>3}.update(trigger_options)
  trigger = auto_complete_field target_id, options

  target + suggest + trigger
end