Forum: Ruby on Rails scriptaculous autocompletion LIMIT and ajax vs. local

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
1a161d16b292cbacee7b4563bd0c72e8?d=identicon&s=25 Alon Goldshuv (Guest)
on 2006-06-02 02:37
Hi,

I am using scriptaculous ajax autocompletion (not local autocompletion).
I have 2 questions:

1 - The database query being sent to the server always has LIMIT 10. I
don't want to have a limit, but I just can't for the life of me find
where this limit is set in the code. I did see "choices: 10" in
controls.js but that's for autocompleter.Local, which I don't use, and
changing it has no effect. Also, I can't see setting the limit as being
a part of the options array. How do I remove it?

2 - I am debating whether to use the ajax or local autocompletion. The
autocomplete values are to be retrieved from a table with about 2000
values, that don't change frequently at all. On one hand I don't want to
use ajax since it involves a lot of db queries, and on the other hand,
with local,  I don't know if injecting about 2000 values (avg 10 bytes
each) into the page is a good idea (or is it not a big deal?). Any
advice?

Feedback is very appreciated!
Alon.
685df76ebeb6c0d61ff5e0284830f691?d=identicon&s=25 Jim Cheetham (Guest)
on 2006-06-02 02:53
(Received via mailing list)
On Fri, Jun 02, 2006 at 02:37:24AM +0200, Alon Goldshuv wrote:
> 2 - I am debating whether to use the ajax or local autocompletion. The
> autocomplete values are to be retrieved from a table with about 2000
> values, that don't change frequently at all. On one hand I don't want to
> use ajax since it involves a lot of db queries, and on the other hand,
> with local,  I don't know if injecting about 2000 values (avg 10 bytes
> each) into the page is a good idea (or is it not a big deal?). Any
> advice?

If the data don't change during the lifetime of the page input form,
you're only talking about 20k ... which is probably less than one of the
image files you're probably using elsewhere :-)

You could decide to minimise that 20k by using some sort of unique
pruning/compression, and expand the list when it gets to the client end,
but that sounds like too much hard work :-) Just enabling compression in
yout HTTP server will probably achieve greater savings :-)

-jim
1a161d16b292cbacee7b4563bd0c72e8?d=identicon&s=25 Alon Goldshuv (Guest)
on 2006-06-02 03:06
> If the data don't change during the lifetime of the page input form,
> you're only talking about 20k ... which is probably less than one of the
> image files you're probably using elsewhere :-)

ah, good point! puts things in perspective :-)

thanks Jim. appreciated.
1a161d16b292cbacee7b4563bd0c72e8?d=identicon&s=25 Alon Goldshuv (Guest)
on 2006-06-02 15:19
Anybody knows the answer to the LIMIT question?
7223c62b7310e164eb79c740188abbda?d=identicon&s=25 Xavier Noria (Guest)
on 2006-06-02 15:51
(Received via mailing list)
On Jun 2, 2006, at 15:19, Alon Goldshuv wrote:

> Anybody knows the answer to the LIMIT question?

I guess you want:

   auto_complete_for :post, :title, :limit => 15, :order =>
'created_at DESC'

For full generality the contract is you write an action with
"auto_complete_for" prepended to the model and attribute names like
this, given you want to autocomplete for :card, :back in the form:

   def auto_complete_for_card_back
     @words = Word.find(
       :all,
       :conditions => ['word LIKE ?', params[:card][:back] + '%'],
       :limit => 10,
       :order => 'word ASC'
     )
     render :layout => false
   end

and generate a list as view:

   <ul>
   <% for word in @words %>
     <li><%= word.word %></li>
   <% end %>
   </ul>

Does that help?

-- fxn
1a161d16b292cbacee7b4563bd0c72e8?d=identicon&s=25 Alon Goldshuv (Guest)
on 2006-06-02 16:12
Xavier Noria wrote:
>
> Does that help?
>

yes! thanks a lot, exactly what I was looking for.

Alon.
This topic is locked and can not be replied to.