searchkick gem을 사용하여 응용 프로그램을 설정했고 Presenter 색인의 자동 완성 기능을 사용하고 있습니다. 내 문제는 여러 필드 (first_name 및 last_name)에서 검색 중이며 두 필드에서 발표자를 검색 할 수있는 반면 (예 : Presenter 'Jennifer Hall'이있는 경우 'Jennifer'또는 'Hall '및'Jennifer Hall '이라는 단어가 자동 완성 드롭 다운에 나타납니다. 그러나'Jennifer '(일단 공간을 추가하면)라고 입력하면 이름이 사라지고 더 이상 제안이 없습니다. 내 질문은 어떻게 해결할 수 있습니까?searchkick/elasticsearch가 여러 속성을 사용하여 자동 완성을 설정했습니다.
나는이 튜토리얼 따랐다
내 코드 : Adding search and autocomplete to a Rails app with Elasticsearch
presenter.rb :
class Presenter < ActiveRecord::Base
searchkick autocomplete: ['first_name', 'last_name'],
suggest: ['first_name', 'last_name']
...
end
presenters_controller.rb :
class PresentersController < ApplicationController
def index
if params[:query].present?
@presenters = Presenter.search(params[:query],
fields: [:first_name, :last_name],
page: params[:page])
else
@presenters = Presenter.all.page params[:page]
end
end
def autocomplete
render json: Presenter.search(params[:query],
autocomplete: true,
fields: [:first_name, :last_name],
limit: 10).map { |presenter|
presenter.first_name + " " + presenter.last_name
}
end
...
end
내가 가진를 .map {| 발표자 | 여기에서 등} 아이디어 : 나는 정확히 솔루션을 따라 할 때
그러나how do i map multiple attributes in rails with searchkick gem
, 난 단지 제안 이름의 내 드롭 다운에서 '정의되지 않은'되었다. presenter.first_name + ""+ presenter.last_name으로 변경하면 전체 이름이 드롭 다운에 나타납니다.
routes.rb :
resources :presenters, :only => [:index, :show] do
collection do
get :autocomplete
end
index.html.haml :
application.html.haml : 작동 그래서 typeahead.js을 사용하고
.container
= form_tag presenters_path, method: :get do
- if params[:query].present?
.btn-search.btn-clearsearch
= link_to "clear", presenters_path
- else
.search
Search
= text_field_tag :query, params[:query],
id: "presenter_search",
autocomplete: "off"
= submit_tag "go", class: "btn-search"
:
= javascript_include_tag 'application'
= javascript_include_tag
"//cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.9.3/typeahead.min.js"
및
presenter.js.coffee :
$ ->
$('#presenter_search').typeahead
name: "presenter"
remote: "/presenters/autocomplete?query=%QUERY"
그래서, 다시 한 번, 내 문제는 내가 처음 이름을 입력하면, 모든 옵션이 이름은 (처음과 마지막 두 드롭 다운에 표시됩니다 일치하는 것입니다 이름). 그러나 공간을 입력하자마자 제안 목록 전체가 사라집니다. 제 이름은 'Jennifer H'입니다.
.map(&:first_name, &:last_name)
또는
.map(&:first_name, :last_name)
오류를 생성하고,
.map{ |presenter| presenter.slice(:first_name, :last_name) }
이 모든 제안을한다 : 나는 문제가 컨트롤러/자동 완성 액션의 매핑이지만, 입력 것을 추측 할 수 드롭 다운에서 '정의되지 않음'을 읽습니다.
해결 방법에 대한 제안 사항이 있으십니까?
솔루션을 찾을 수 있었습니까? 나는 지금 같은 문제를 찾고있다. -/ –
나는 Elasticsearch에 제 작품을 넣고 잠시 동안 하나의 속성 만 검색 할 수 있도록 정해야했습니다. :(연말이되기 전에 희망을 갖고 다시 돌아 가야합니다.) 해결 방법을 찾으면 알려 드리겠습니다. 그 전에 여기를 찾아 공유한다면, 내 영웅이 될 것입니다. – wendybeth