如何为 typeahead 写不同的 id

how to write different id for typeahead

我正在使用 rails 以及 elasticsearch 和 typeahead。

我有三个输入:公司、职位和导航(搜索公司和职位)。

我知道如何实现其中之一,但不知道如何在遵循 DRY 的同时实现所有这些。 autocomplete的路由、controller和js文件应该如何设计?

这是适用于一个的代码。

var numbers = new Bloodhound({
  datumTokenizer: Bloodhound.tokenizers.whitespace,
  queryTokenizer: Bloodhound.tokenizers.whitespace,
  remote: {
    url: "autocomplete?search=%QUERY",
    wildcard: "%QUERY"
  }
});

// initialize the bloodhound suggestion engine
numbers.initialize();

$("#nav_search").typeahead({
  items: 6,
  source:numbers.ttAdapter()
});
$("#company_search").typeahead({
  items: 6,
  source:numbers.ttAdapter()
});
$("#position_search").typeahead({
  items: 6,
  source:numbers.ttAdapter()
});

我重写

$("#nav_search").typeahead({
  items: 6,
  source:numbers.ttAdapter()
});
$("#company_search").typeahead({
  items: 6,
  source:numbers.ttAdapter()
});
$("#position_search").typeahead({
  items: 6,
  source:numbers.ttAdapter()
});

var array = ["#nav_search", "#company_search", "#position_search"]
for (i = 0; i < array.length; i++) {
    $(array[i]).typehead({
        items: 6,
        souce: numbers.ttAdapter()
    });
}

如果我没记错的话,这里AJAX是包含在内的。所以他们正在向您的后端发出 GET 请求 url /autocomplete

  remote: {
    url: "autocomplete?search=%QUERY",
    wildcard: "%QUERY"
  }

您需要检查 Rails routes.rb 文件和 rake routes 的输出,因为请求 get /autocomplete 将由特定的控制器#action 处理。您需要从 rails routing

了解这一点

url /autocomplete 的获取请求正在传递以下输入参数

search = %QUERY

因此您的控制器操作将能够使用这些参数。

parameters[:search]

它会响应提供自动完成json。

如果您想获得更多帮助,我们需要更多信息