如何为typeahead编写不同的id

时间:2017-11-21 08:17:06

标签: ruby-on-rails elasticsearch autocomplete typeahead.js

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

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

我知道如何实施其中一个,但不知道如何在遵循DRY的同时实施所有这些。我该如何设计自动完成路由,控制器和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()
});

1 个答案:

答案 0 :(得分:1)

我重写了

$("#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

发出/autocomplete个请求
  remote: {
    url: "autocomplete?search=%QUERY",
    wildcard: "%QUERY"
  }

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

了解这一点

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

search = %QUERY

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

parameters[:search]

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

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