Twitter Typeahead没有在Rails 4中显示建议

时间:2015-11-25 11:18:42

标签: ruby-on-rails ruby elasticsearch typeahead searchkick

我在rails项目中使用了searchsearch和searchkick包装器。我已成功将Twitter Typeahead(远程)集成到项目中,但建议不会出现。任何人都可以调查此事。

我正在收到回复,但是typeahead没有在建议中显示。

以下图片

enter image description here

响应

enter image description here

控制器:

def autocomplete
    render json: Product.search(params[:query], fuzziness: 10).map(&:name) 
end

index.html.erb:

    <%= form_tag products_path, method: :get do %>
  <ul>
    <li class="list">
      <%= text_field_tag :query, params[:query],placeholder: "Search Here", class: "typeahead form-control", id: "product-search", autocomplete: "off" %>
    </li>
    <li class="list">
      <%= submit_tag "Search", class: "btn btn-primary btn-size" %>
    </li>
      </ul>
<% end %>

products.js

 var names = new Bloodhound({
  datumTokenizer: function(d) { 
    return Bloodhound.tokenizers.whitespace(d.name); },
  queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: {
      url: '/products/autocomplete?query=%QUERY',
      wildcard: '%QUERY'
    }
  });

  // initialize the bloodhound suggestion engine
  names.initialize();

  // instantiate the typeahead UI
  $('#product-search').typeahead(null, {
  displayKey: 'name',
  source: names.ttAdapter()
});

1 个答案:

答案 0 :(得分:1)

我没有使用typeahead lib,但我假设这里有问题displayKey: 'name',这意味着autocomplete中的rails行动应该提供json使用键name,但您渲染一个数组。尝试从.map(&:name)删除Product.search(params[:query], fuzziness: 10)