【问题标题】:Implementing new typeahead with rails使用 rails 实现新的 typeahead
【发布时间】:2013-03-13 18:32:17
【问题描述】:

这个问题与 Twitter 最近发布的新独立 typeahead 相关,而不是 Bootstrap 版本。

Twitter Typeahead.js

我正在尝试将其集成到 Rails 应用程序中,以从数据库中查找一些帖子的名称,但在尝试使其正常工作时遇到了麻烦。当我搜索时没有任何反应,但我可以导航到 /posts.json 并获取数据。

我有一个包含硬编码数据的工作版本,您可以在此处看到实际操作,输入“a”以获得结果:

jsFiddle local version

JS

$(document).ready(function() {
  $('input.typeahead').typeahead({
  name: 'posts',
  prefetch: '/posts.json',
  limit: 10
 });
});

输入

<input class="typeahead" type="text" dir="ltr" placeholder="Search here....">

这是我的控制器:

def names
  names = []
  all = Post.where("name LIKE ?", "%#{params[:term]}%")
  all.each { |subc| names << subc.name }

render json: names

结束

参数设置:

Started GET "/sub_categories/names?q=a" for 127.0.0.1 at 2013-03-15 09:45:40 -0400
Processing by SubCategoriesController#names as JSON
  Parameters: {"q"=>"a"}
  SubCategory Load (0.5ms)  SELECT "sub_categories".* FROM "sub_categories" WHERE (name LIKE '%%') LIMIT 10
Completed 200 OK in 3ms (Views: 0.3ms | ActiveRecord: 0.5ms)

【问题讨论】:

  • 目前正在发生什么?它只是不工作吗?您是否从 /posts.json 获取数据?
  • 我什么也没得到,但我可以导航到 /posts.json 并获取数据。
  • 好的,我取得了一些进展。我现在在搜索时得到结果,但我得到的是整个数组,而不是只为键入的字母而得到的结果。请参阅原始帖子中添加的控制器代码。

标签: ruby-on-rails-3 typeahead.js


【解决方案1】:

我无法让预取工作,但通过在 json 源的末尾添加“?q=%QUERY”可以远程工作:

remote: '../sub_categories/names?q=%QUERY'

然后在查询中我发现你必须省略第一个 '%' 以便它与你输入的内容相匹配。

控制器:

Post.where("name LIKE ? OR name LIKE ?", "#{params[:q]}%")

【讨论】:

  • 如果我们想显示电子邮件和姓名怎么办?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
相关资源
最近更新 更多