我的网站上有一个Typeahead搜索框,用户可以搜索孩子的名字,包括姓名缩写。
每当有人搜索例如'A. Stark',查询将在此期间切断,只搜索“A”。
JavaScript代码:
var kids = new Bloodhound({
datumTokenizer: function(d) {
return Bloodhound.tokenizers.obj.whitespace(d);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '/search/kids/%QUERY',
wildcard: '%QUERY'
}
});
Rails代码:
def kids
render json: current_client.kids.active.
where('name LIKE ?', "%#{params[:query]}%").
limit(SEARCH_LIMIT).map {|k| {id: k.id, name: k.name, type: 'kids'}}.to_json
end
问题似乎来自JS方面,其中变量%QUERY
被URL中未转义的查询所取代,其中一段时期具有不同的上下文。不知道如何解决这个问题