Rails: выпадающий список typeahead.js возвращает дубликаты или объекты, которые были удалены - PullRequest
0 голосов
/ 26 апреля 2018

Я установил 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"
=> [] 
...