我想在我的表单中的许多字段(5-7)中使用自动完成。Ryan Bates ( http://railscasts.com/episodes/102-auto-complete-association)有一个关于Prototype
库自动补全的截屏视频。另一方面,我注意到有相当多的人建议使用jQuery
来完成这项任务( http://jquery.bassistance.de/autocomplete/demo/)。我猜,去年可能有一些发展,所以我问你-现在你会用什么来自动完成你的表单域?为什么?
顺便说一句,我还有一个关于HABTM协会的自动补全的未决问题:How to do HABTM management with auto completion in Rails?
发布于 2010-05-02 21:12:24
免责声明:这个答案只涵盖了问题的jQuery部分,因为我没有原型自动完成插件的经验,我将把这个问题留给有专业知识的人来回答。
首先,我会坚持使用你已经在使用的框架中编写的插件,不需要从prototype切换到jquery,反之亦然。
如果您尚未使用框架或正在使用jQuery,我建议使用jQuery UI autocomplete (与您所链接的不同),主要围绕它提供的支持和可扩展性。
不管你在看哪个框架,一旦一个插件形成或者被拉入任何核心库(这里是jQuery UI),它就会得到更多的支持,社区也更容易在它的基础上构建,使它变得更好,更具扩展性。此外,如果你遇到麻烦,你更有可能找到问题的答案。
对于rails部分,弹出了一些文章,介绍如何将这个自动完成插件专门用于rails,即I'd get started here。
发布于 2010-05-03 03:06:11
我使用YUI auto-complete。工业实力,用于Yahoo、Flickr和其他A级网站。
Performance
在Rails中,为了在自动完成上获得最佳性能(无论您使用哪个小部件),您都应该在数据库中创建一个视图来查看您的查找信息。例如,你想使用自动完成功能,让用户可以通过标题(而不是内容)来快速搜索他的帖子。
创建视图:
# Rake task code for creating a view
def self.search_posts #
execute "DROP Table IF EXISTS search_posts"
execute "DROP View IF EXISTS search_posts"
execute "CREATE View search_posts AS
SELECT
p.id
, p.title
, p.user_id
FROM posts p
ORDER BY p.title
"
end
还要为SearchPost创建一个ActiveRecord模型。它将从视图中拉出。
然后,在您的控制器中:
# Return the id's and title's matching the search query
# Assumptions: current user id is in Session[:user_id]
# Auto complete query is in params[:query]
SearchPost.find_all(
:conditions => ["user_id = ? and title LIKE ?",
Session[:user_id], "%#{params[:query]}%"]
).collect{|rec| {'title' => rec.title, 'id' => rec.id}.to_json
Benefit
对于自动完成小部件发送给您的Ajax请求,您希望最小化通过db查找的数据量。
本地自动完成
Flickr使用的另一种自动补全架构是:将整个帖子标题和ids数据库下载到浏览器,并在本地进行搜索。请参阅http://code.flickr.com/blog/2009/03/18/building-fast-client-side-searches/
https://stackoverflow.com/questions/2753178
复制相似问题