【问题标题】:Typeahead not sending requests to serverTypeahead 不向服务器发送请求
【发布时间】:2014-03-08 18:16:00
【问题描述】:

我按照这个教程 https://shellycloud.com/blog/2013/10/adding-search-and-autocomplete-to-a-rails-app-with-elasticsearch

当我在文本字段中输入时,我没有看到任何 ajax 请求被发送到服务器。 (我将 typeahead.js 添加到我的资产中)

我错过了什么?

这是我的代码

查看:

.col-xs-12.col-sm-12.col-md-12.col-lg-6.col-lg-offset-3
  %form#search_form{action: "/drugs/search", method: "get", text: "search", role:"search"}
    .input-group
      %input.form-control{type: "text", placeholder: "Search", name: "query", id: "drug_search", autocomplete: "off"}
      %span.input-group-btn
        %button.btn.btn-default{type: "submit"} Search
  .panel-group#drug-list
    = render @drugs
    = will_paginate @drugs, renderer: BootstrapPagination::Rails

控制器:

  def autocomplete
    render json: Drug.search(params[:query], autocomplete: true, limit: 6).map(&:generic_name)
  end

js

$ ->
  $("#drug_search").typeahead
    name: "drug"
    remote: "/drugs/autocomplete?query=%QUERY"

【问题讨论】:

  • 您使用的是哪个版本的 typeahead.js?
  • v0.10.1。最新的。

标签: ruby-on-rails typeahead.js


【解决方案1】:

在 v0.10.0 发布时,API 发生了细微的变化。试试这个:

var drugSource = new Bloodhound({
  datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.num); },
  queryTokenizer: Bloodhound.tokenizers.whitespace,
  remote: '/drugs/autocomplete?query=%QUERY'
});

drugSource.initialize();

$('#drug_search').typeahead(null, {
  name: 'drug',
  source: drugSource.ttAdapter()
});

有关 v0.10.0 版本更改的更多详细信息,您可以参考migration guide

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 2014-10-26
    • 2017-04-21
    • 2018-10-04
    • 2012-12-12
    相关资源
    最近更新 更多