2015-11-25 31 views
0

我在我的rails项目中使用了searchsearch包装器的elasticsearch。我已经成功地将Twitter Typeahead(远程)整合到项目中,但建议并未提出。任何人都可以请看这个问题。Twitter Typeahead是没有在Rails 4中显示建议

我得到回应,但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() 
}); 
+0

其实我是Elasticsearch和Rails的初学者。非常感谢您的回答。是的,它有效:D –

回答

1

我不是一个预输入的lib工作,但我假设这里的问题是displayKey: 'name'rails中的autocomplete操作应该提供jsonname,但是您呈现的是数组。尝试从Product.search(params[:query], fuzziness: 10)删除.map(&:name)

相关问题