1

我在我的 rails 项目中使用了带有 searchkick 包装器的 elasticsearch。我已成功将 Twitter Typeahead(远程)集成到项目中,但没有提出建议。任何人都可以请调查此事。

我收到了回复,但预输入未在建议中显示。

下面的图片

在此处输入图像描述


回复

在此处输入图像描述

控制器 :

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 %>

产品.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()
});
4

1 回答 1

2

我没有使用 typeahead 库,但我在这里假设问题,应该提供一个键的操作是displayKey: 'name'什么意思,但是你渲染一个数组。尝试从.autocompleterailsjsonname.map(&:name)Product.search(params[:query], fuzziness: 10)

于 2015-11-25T11:43:55.873 回答