2

hereのように単一の属性で検索すると、オートコンプリートは正常に機能します。

(name,city,country) などの複数の属性を使用したオートコンプリートは、-> ( thisによると)を通じて可能です。

def autocomplete
     Doctor.search(params[:query], autocomplete: true, limit: 10).map{|doctor| doctor.slice(:name, :city, :country) }
end

ただし、これにより、オートコンプリートのドロップダウン/提案に「未定義」が表示されます。

タイプアヘッドの場合、私は使用しています:

<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.9.3/typeahead.min.js"></script>

コードでは、次のように参照されています。

$( function () {
   $("#search").typeahead({
    name: "doctor",
    remote: "/doctors/autocomplete?query=%QUERY"
  });


});

複数のデータセットが返されるため、typeahead js ファイルに何らかの変更が必要ですか?

4

2 に答える 2

3

返す必要がありますhash

コントローラーでのautocompleteアクションは次のdoctorsようにする必要があります。

def autocomplete
  render json: Doctor.search(params[:query], autocomplete: true, limit: 10).map do |doctor| { name: doctor.name, city: doctor.city, country: doctor.country }
  end
end

先行入力オプションを追加displayKeyします。

$( function () {
   $("#search").typeahead({
    name: "doctor",
    displayKey: 'name',
    remote: "/doctors/autocomplete?query=%QUERY"
  });
});

この記事を読んで、それが役立つかどうかを確認することもできます。

于 2015-02-21T08:43:24.663 に答える