2017-12-18 5 views
1

레일스로 작업하는 Select2를 얻으려고합니다. API 엔드 포인트가 작동하지만 내 콘솔에 TypeError: data is undefined 메시지가 표시되므로 선택 필드가 채워지지 않습니다.Select2가 반환합니다. TypeError : 데이터가 정의되지 않았습니다.

내 코드는 다음과 같습니다

$(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 }; 
     } 
    } 
    }); 
}); 

어떤 생각 이유는 상기 오류가 될 수있다? 미리 감사드립니다!

+2

시도 : 기능 (데이터) {'대신 결과'의 : 기능 (데이터) {'. –

답변

1

Select2 문서에 따르면 Ajax 요청에서 데이터를 변환 할 수있는 함수의 이름은 results이 아니라 processResults입니다.

참조 : https://select2.org/data-sources/ajax#transforming-response-data

그래서 올바른 코드가 있어야한다 :`processResults를 사용하는

$(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 }; 
     } 
    } 
    }); 
}); 
+0

감사합니다. 몇 가지 수정 사항이 적용되었습니다. – DaniG2k

관련 문제