Sha256: abb25b2a928411ac8b35f1e3c8739c86cefcce28ddb90b1f2c80c77984c33850

Contents?: true

Size: 792 Bytes

Versions: 1

Compression:

Stored size: 792 Bytes

Contents

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, options={})
      options[:display]     ||= name
      options[:order]       ||= "#{name} ASC"
      options[:limit]       ||= 10
      options[:name]          = name

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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
autosuggest-rb-0.1.5 lib/autosuggest/controller_macros.rb