simple_autocomplete and find: same inputs but diff order

I've used the the simple_autocomplete plugins to search a City tables with 2millions records.

However, I modified the :order parameters of the "find" function in the plugin so that "San Francisco, US" will always pop up first.

Something weird tho, whenever I restart the server, the suggestions are correct in the first time; but then the :order does not work.

It is weird that the same inputs can generate different results.

Is it something related to caching or any other clues?

thanks!!! Arthur

Hi,

could you post the relevant code where you change the behaviour of the find and :order ?

cioa, tom

Thomas r. Koll wrote:

Hi,

could you post the relevant code where you change the behaviour of the find and :order ?

cioa, tom

Hi Tom,

I modified the autocomplete_for function in autocomplete.rb

<code>           # arthur: override the find_order options           find_options = {             :conditions => [ "LOWER(#{method}) LIKE ?", '%'+params[:q].to_s.downcase + '%' ],             :order => options.delete(:find_order) || "#{method} ASC", # arthur, allow customization of find order             :limit => options[:limit] || 10             }.merge!(options)

          # arthur, customize find methods           find_method = find_options.delete(:find_method)           if options[:find_method]             @items = object.to_s.camelize.constantize.send(options[:find_method], params[:q].to_s.downcase, find_options)           else             @items = object.to_s.camelize.constantize.find(:all, find_options)           end

</code>

Therefore, in my controller,

<code>

#autocomplete_for :city, :city, :limit => 15   autocomplete_for :city, :city, :limit => 10,       :find_method => "autocomplete_for_ccr",       :find_order => "priority DESC, AccentCity, country, region" do

items>

      items.map{|item|         "#{item.ccr(:capitalize=>true)}|#{item.cr}|#{item.country}"}.join("\n")   end

</code>

I supposed that the suggestions will be ordered by the priority field in my cities table, but it is not always true.

On the other hand, I use jQuery autocomplete as the javascript plugins.

Arthur

Hi,

I dare to ask but is the data the same in dev and prod?

A second thing, there's a bit difference between merge and merge! please try without the !

And last but not least: I think these two lines are wrong, but I'm not sure what should be used for the if statement

find_method = find_options.delete(:find_method) if options[:find_method]

ciao, tom