我正在尝试执行select2搜索,以根据用户输入的数据动态产生结果。
当用户输入内容时,它将向执行针对ElasticSearch的查询的操作发送GET请求,然后ElasticSearch应该返回许多可以转换为JSON的对象。
尽管正在针对ElasticSearch执行查询,但它仍基于用户数据返回结果。我没有看到在select2搜索字段下方显示任何结果。
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
dashboard.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调用时,将产生此错误:
我正在尝试执行select2搜索,以根据用户输入的数据动态产生结果。在用户键入内容时,它应向执行针对...
已解决!
即使我遵循官方的select2文档,我仍然意识到我的JSON格式错误:https://select2.org/data-sources/formats