Module: Autosuggest::ControllerMacros

Included in:
ActionController::Base
Defined in:
lib/autosuggest/controller_macros.rb

Instance Method Summary collapse

Instance Method Details

#autosuggest(object, name, options = {}) ⇒ Object

when called, you must add a custom route for action like this: resources :products do

get :autosuggest_brand_name, :on => :collection

end



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/autosuggest/controller_macros.rb', line 9

def autosuggest(object, name, options={})
  display_name = options[:display] || name
  order        = options[:order] || "#{name} ASC"
  limit        = options[:limit] || 10
  like_clause  = defined?(PGconn) ? 'ILIKE' : 'LIKE'

  options[:display]     ||= name
  options[:order]       ||= "#{name} ASC"
  options[:limit]       ||= 10
  options[:like_clause]   = defined?(PGconn) ? 'ILIKE' : 'LIKE'
  options[:name]          = name

  define_method "autosuggest_#{object}_#{name}" do
    results = db_store(object).query(options.merge(:query => params[:query], :object => objectify(object)))
    render :json => Yajl::Encoder.encode(results.map{|r| {:name => r.send(display_name), :value => r.id}})
  end
end