【发布时间】:2018-04-04 09:30:39
【问题描述】:
我在我的 Rails 应用程序中使用 typeahead,如下所示:
<%= form_tag search_path, :method => "get", id: "search-form" do %>
<%= text_field_tag :search, params[:search], id: "search" %>
<%= submit_tag "Search" %>
<%end%>
<script>
var items = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '/items/autocomplete?search=%SEARCH',
wildcard: '%SEARCH'
}
});
$('#search')
.typeahead(null, {source: items})
.on('typeahead:selected', function(e){
$("#search-form").submit();
}).focus();
</script>
控制器动作:
def autocomplete
render json: Item.search(params[:search], {
fields: ["title"],
match: :word_start,
limit: 10,
load: false,
misspellings: {below: 5}
}).map(&:title)
end
自动完成功能正常,但显示重复的结果。任何想法如何解决这个问题?
【问题讨论】:
-
@dbugger 感谢您的回复,我刚刚在我的问题中添加了控制器操作。
-
不知道双打从何而来(显然它们在您的数据库中),但您可以添加一个“uniq”来摆脱它们...
-
感谢@Danny 的信赖,我该怎么做?
-
我会在自动完成方法中的 .map 调用之前插入它
标签: javascript ruby-on-rails typeahead.js typeahead