我正在使用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()
});
答案 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提供自动完成功能。
如果您想获得更多帮助,我们需要更多信息