Я установил typeahead.js
в моем приложении rails, но когда я начинаю вводить слово в поле ввода, раскрывающийся список возвращает дубликаты или объекты, которые были удалены вместе с правильным словом.
Вот эта настройка, которая у меня есть:
внутри контроллера:
def autocomplete
render json: Item.search(params[:search], {
fields: ["title"],
match: :word_start,
limit: 10,
load: false,
misspellings: {below: 5}
}).map(&:title).uniq
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>
Есть идеи, как мне это исправить?
Обновление 1
Если я делаю это внутри консоли rails, она возвращает пустой массив, что правильно, потому что в настоящее время у меня нет элементов внутри базы данных. Но если ввести в поле ввода старые элементы, которые были удалены, отобразятся в раскрывающемся списке:
2.4.0 :026 > Item.all.map(&:title).uniq
Item Load (0.4ms) SELECT "items".* FROM "items"
=> []