我想在表单中的许多字段(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?
答案 0 :(得分:2)
我使用YUI auto-complete。工业实力,用于Yahoo,Flickr和其他A级网站。
<强>性能强>
在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
<强>效益强>
您希望最小化通过数据库为自动完成窗口小部件发送给您的Ajax请求查找的数据量。
本地自动完成
另一个自动完成的体系结构是Flickr使用的体系结构:将整个数据库的帖子标题和ID下载到浏览器并在本地搜索它们。见http://code.flickr.com/blog/2009/03/18/building-fast-client-side-searches/
答案 1 :(得分:1)
免责声明:这个答案仅涵盖jQuery的一半问题,因为我没有使用Prototype自动完成插件的经验,我会留给那些有专业知识回答的人。
首先,我会坚持使用你已经在使用的框架中编写的插件,没有必要从原型切换到jquery,反之亦然。
如果您尚未使用框架或正在使用jQuery,我建议jQuery UI autocomplete(与您链接的不同)主要围绕它提供和提供的支持和可扩展性。
无论您正在查看哪个框架,一旦插件形成或被拉入任何核心库(在这种情况下为jQuery UI),它就会获得更多的支持,并且社区更容易建立在它,使它更好,更可扩展。此外,如果您遇到麻烦,您更有可能找到问题的答案。
对于rails部分,有一些文章突出显示如何使用此自动完成插件专门使用rails I'd get started here。