Module: Autosuggest::ControllerMacros
- Included in:
- ActionController::Base
- Defined in:
- lib/autosuggest/controller_macros.rb
Instance Method Summary collapse
-
#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.
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, ={}) display_name = [:display] || name order = [:order] || "#{name} ASC" limit = [:limit] || 10 like_clause = defined?(PGconn) ? 'ILIKE' : 'LIKE' [:display] ||= name [:order] ||= "#{name} ASC" [:limit] ||= 10 [:like_clause] = defined?(PGconn) ? 'ILIKE' : 'LIKE' [:name] = name define_method "autosuggest_#{object}_#{name}" do results = db_store(object).query(.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 |