首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >rails应用程序中文本框的“建议”功能

rails应用程序中文本框的“建议”功能
EN

Stack Overflow用户
提问于 2008-10-11 19:02:14
回答 5查看 2K关注 0票数 9

我正在寻找一种最简单的方法来实现Rails应用程序中的文本输入字段的"suggest“特性。其思想是完成存储在数据库列中的名称,在用户键入时为用户提供可能匹配的下拉菜单。

谢谢你的建议!

EN

回答 5

Stack Overflow用户

发布于 2008-10-14 14:26:56

Rails使用text_field_with_auto_complete方法使文本字段上的“建议”式自动补全变得非常容易。

在Rails1.x中,这个方法内置于ActionView::Helpers::JavaScriptMacrosHelper中,但是在Rails2.x中,它被移到了a separate plugin中。

假设您有一个名为Post的模型,它有一个名为title的文本字段。在通常使用text_field_tag (或f.text_field)的视图中,只需使用text_field_with_auto_complete即可:

代码语言:javascript
运行
复制
<%= text_field_with_auto_complete :post, :title %>

此外,在PostsController中,您必须做出相应的声明:

代码语言:javascript
运行
复制
class PostsController < ApplicationController
  auto_complete_for :post, :title
end

这在幕后执行的操作是向控制器动态添加一个名为auto_complete_for_[object]_[method]的操作。在上面的示例中,此操作将称为auto_complete_for_post_title

值得指出的是,这个自动生成的操作使用的find调用将跨所有模型对象执行,例如Post.find(:all, ...)。如果这不是您想要的行为(例如,如果想根据登录的用户将搜索限制到特定的Post子集),那么您必须在控制器中定义自己的auto_complete_for_[object]_[method]操作。

票数 8
EN

Stack Overflow用户

发布于 2008-10-11 19:07:36

Ruby on Rails提供了Prototype framework。这个框架由Script.aculo.us使用,它提供了一个autocompleter control,可以提供您正在寻找的功能。

票数 5
EN

Stack Overflow用户

发布于 2008-10-11 19:08:37

编辑:我将把这个答案留在这里作为一种理论参考点,但听起来autocompleter answer可能对您更有用:)

免责声明:虽然我在Google工作(它在各种UI中明显有"Suggest“元素),但我没有看过这方面的任何代码,甚至没有与任何人讨论过客户端方面的问题。

服务器端语言在这里可能无关紧要。重要的一点是客户端所需的AJAX。

我建议你有一个大约1秒的计时器(尝试找到一个最佳位置),每当用户在文本框中输入键击时,该计时器将被重置,如果用户导航离开文本框,该计时器将被取消。如果计时器触发,让它触发一个AJAX请求。AJAX请求将包含到目前为止用户键入的内容。AJAX响应应该是建议列表和原始请求文本。

当AJAX响应返回时,如果textbox中的文本仍然与响应中的字段相同(即用户自那以后没有键入),并且如果textbox仍然具有焦点,则提供一个下拉列表。(必须有数百个关于HTML组合框的示例页面才能完成这方面的工作。)

服务器所需要做的就是通过执行搜索并适当地格式化响应来响应AJAX请求-这比客户端简单得多!

希望这能有所帮助--很抱歉没有任何示例代码,但我怀疑这很复杂,而且我不是一个真正的JavaScript开发人员。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/194450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档