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