Я пытаюсь реализовать поиск select2 для динамического получения результатов на основе введенных пользователем данных.
Когда пользователь печатает, он должен отправить запрос GET к действию, которое выполняет запрос к ElasticSearch, затем ElasticSearch должен вернуть количество объектов, которые я могу преобразовать в JSON.
Я не вижу результатов, отображаемых под полем поиска select2, даже если запрос выполняется к ElasticSearch, и он возвращает результаты на основе данных пользователей.
DashboardController.rb
def card_search
if params[:query].present?
cards = Elasticsearch::Model.search(params[:query]).records.first(1)
hash = {}
hash["results"] = cards.map{|v| v.serializable_hash(only: [:name]) }
render json: hash.to_json
else
render json: []
end
end
панель инструментов. html .erb
$(".js-data-example-ajax").select2({
ajax: {
url: "/dashboard/card_search",
dataType: 'json',
type: "GET",
delay: 250,
data: function (term, page) {
return {
query: term,
page: page
};
},
formatResult: function (item) { return item.name; },
formatSelection: function (item) { return item.name; },
results: function (data, page) {
return data;
},
cache: true
},
placeholder: 'Search for a card',
minimumInputLength: 1,
});
Параметры успешно передаются в контроллер из javascript:
Параметры: {"query" => "Charizard "," page "=>" 1 "}
ElasticSearch создает массив результатов, который преобразуется в JSON:
" {\ "results \": [{\ "name \": \ "Charizard \"}]} "
Когда ElasticSearch возвращает массив, и JSON возвращается к вызову AJAX, возникает эта ошибка: