在Typeahead查询中正确转义句点

时间:2016-07-01 00:01:55

标签: jquery ruby-on-rails typeahead

我的网站上有一个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中未转义的查询所取代,其中一段时期具有不同的上下文。不知道如何解决这个问题

0 个答案:

没有答案