Я пытаюсь заставить Select2 работать с Rails. У меня есть конечная точка API, но я получаю сообщение TypeError: data is undefined
в моей консоли, поэтому поля выбора не заполняются.
Мой код выглядит так:
$(document).ready(function() {
return $('#form_emails').select2({
placeholder: 'User list',
minimumInputLength: 3,
ajax: {
url: '/api/s/users',
dataType: 'json',
quietMillis: 250,
data: function(term) {
return { q: term };
},
results: function(data) {
var results;
results = [];
$.each(data, function(idx, item) {
results.push({
'id': item.id,
'text': item.first_name + ' ' + item.last_name
});
});
return { results: results };
}
}
});
});
Любая идея, почему я могу получить вышеупомянутую ошибку? Заранее спасибо!
Согласно документации Select2, функция, в которой вы можете преобразовать данные из запроса Ajax, называется processResults
, а не results
.
См. Https://select2.org/data-sources/ajax#transforming-response-data
Поэтому правильный код должен быть:
$(document).ready(function() {
return $('#form_emails').select2({
placeholder: 'User list',
minimumInputLength: 3,
ajax: {
url: '/api/s/users',
dataType: 'json',
quietMillis: 250,
data: function(term) {
return { q: term };
},
processResults: function(data) {
var results;
results = [];
$.each(data, function(idx, item) {
results.push({
'id': item.id,
'text': item.first_name + ' ' + item.last_name
});
});
return { results: results };
}
}
});
});
processResults: function(data) {
вместоresults: function(data) {
.