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

On Feb 2, 2:27 am, Arthur C. [email protected]
wrote:

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


Thomas R. “TomK32” Koll <> http://ananasblau.com
just a geek trying to change the world
TomK32 (Thomas R. Koll) · GitHub

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

# 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

Therefore, in my controller,

#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

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


Thomas R. “TomK32” Koll <> http://ananasblau.com
just a geek trying to change the world
TomK32 (Thomas R. Koll) · GitHub

More info for the problem:

The plugins runs fine in development mode but production mode only!

Thanks,
Arthur