lib/autosuggest/controller_macros.rb in autosuggest-rb-0.0.2 vs lib/autosuggest/controller_macros.rb in autosuggest-rb-0.0.3

- old
+ new

@@ -1,15 +1,21 @@ +require 'yajl' + module Autosuggest module ControllerMacros # when called, you must add a custom route for action like this: # resources :products do # get :autosuggest_brand_name, :on => :collection # end - def autosuggest(object, name) + def autosuggest(object, name, options={}) + display_name = options[:display] || name + order = options[:order] || "#{name} ASC" + limit = options[:limit] || 10 + define_method "autosuggest_#{object}_#{name}" do # assuming an ActiveRecord mysql backed model for right now - results = objectify(object).where("#{name} LIKE ?", "%#{params[:q]}%") - render :json => results.map{|r| {:name => r.send(:name), :value => r.id}} + results = objectify(object).where("#{name} LIKE ?", "%#{params[:query]}%").order(order).limit(limit) + render :json => Yajl::Encoder.encode(results.map{|r| {:name => r.send(display_name), :value => r.id}}) end end end end