【发布时间】:2015-07-02 15:22:19
【问题描述】:
我正在尝试使用 rails 实现 twitter typeahead。 我已经使用 searchkick gem 和 elasticsearch 完成了这项工作。
这里有个小问题,我的 BloodHound 远程调用是这样的
var engine = new Bloodhound({
datumTokenizer: function(d) {
console.log(d);
return Bloodhound.tokenizers.whitespace(d.username);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: "../users/autocomplete?query=%QUERY"
}
});
现在在这里,而不是将 %QUERY 替换为 typeahead 搜索框的值,它只是给出字符串 %QUERY 的原样。
休息一切正常,因为如果我转到网址
http://localhost:3000/users/autocomplete?query=vive
我得到了想要的结果。
只是 %QUERY 没有被替换。
这是表格
<%= form_tag users_path, class:'ui form',method: :get do %>
<div class="ui small icon input">
<%= text_field_tag :query, params[:query],class:'typeahead',id:'user_search',placeholder:'Search Breeder' %>
<i class="search icon"></i>
</div>
<%end%>
还有控制器
def autocomplete
render json: User.search(params[:query],autocomplete:true).map{|user| {username:user.username,value:user.id}}
end
/routes.rb/
resources :users do
collection do
get :autocomplete
end
end
有人可以帮忙吗。
【问题讨论】:
-
你能在你的用户模型中显示搜索方法吗?
标签: ruby-on-rails typeahead.js