# Simple\_autocomplete and find: same inputs but diff order

**URL:** <https://www.ruby-forum.com/t/simple-autocomplete-and-find-same-inputs-but-diff-order/159185>\
**Category:** Rails\
**Created:** [February 2, 2009, 2:27am UTC](https://www.ruby-forum.com/t/simple-autocomplete-and-find-same-inputs-but-diff-order/159185 "2009-02-02T02:27:33Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![artchrst](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e36b37/32.png) [@artchrst](https://www.ruby-forum.com/u/artchrst)\
**Post date:** [February 2, 2009, 2:27am UTC](https://www.ruby-forum.com/t/simple-autocomplete-and-find-same-inputs-but-diff-order/159185/1 "2009-02-02T02:27:33Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![artchrst](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e36b37/32.png) [@artchrst](https://www.ruby-forum.com/u/artchrst)\
**Post date:** [February 2, 2009, 12:31pm UTC](https://www.ruby-forum.com/t/simple-autocomplete-and-find-same-inputs-but-diff-order/159185/2 "2009-02-02T12:31:43Z")

</div>

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. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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](http://ananasblau.com)  
just a geek trying to change the world  
[TomK32 (Thomas R. Koll) · GitHub](http://github.com/TomK32)

---

<div class="post-metadata">

**Author:** ![artchrst](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e36b37/32.png) [@artchrst](https://www.ruby-forum.com/u/artchrst)\
**Post date:** [February 3, 2009, 2:22am UTC](https://www.ruby-forum.com/t/simple-autocomplete-and-find-same-inputs-but-diff-order/159185/3 "2009-02-03T02:22:04Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![artchrst](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e36b37/32.png) [@artchrst](https://www.ruby-forum.com/u/artchrst)\
**Post date:** [February 3, 2009, 5:20pm UTC](https://www.ruby-forum.com/t/simple-autocomplete-and-find-same-inputs-but-diff-order/159185/4 "2009-02-03T17:20:57Z")

</div>

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](http://ananasblau.com)  
just a geek trying to change the world  
[TomK32 (Thomas R. Koll) · GitHub](http://github.com/TomK32)

---

<div class="post-metadata">

**Author:** ![artchrst](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e36b37/32.png) [@artchrst](https://www.ruby-forum.com/u/artchrst)\
**Post date:** [February 3, 2009, 4:13am UTC](https://www.ruby-forum.com/t/simple-autocomplete-and-find-same-inputs-but-diff-order/159185/5 "2009-02-03T04:13:55Z")

</div>

More info for the problem:

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

Thanks,  
Arthur
