2017-03-28 4 views
0

현재 레일 4.03 버전을 사용하는 gem rails-select2에서 select2를 사용하고 있습니다.Select2 ajax가 레일에서 작동하지 않습니다.

나는 select2의 ajax 버전을 작동시킬 수 없다. 데이터를 배열로 설정 한 정적 버전은 아약스 버전이 아닌 동안 작동한다.

오류가 발생하지 않고 백엔드에서 아약스를 호출하지 않습니다.

select는 select2 스타일로 비어 있고 입력 할 때는 아무 것도하지 않습니다.

문제가있는 곳을 디버깅하거나 이해하는 방법이 있습니까?

<select class="js-data-example-ajax" style="width:100%"> 
<option value="3620194" selected="selected">Select a value......</option> 
</select> 

자바 스크립트의 경우 : 뷰에

: 나는 다음과 같은 예제 코드를 사용하고

$(".js-data-example-ajax").select2({ 
    ajax: { 
    url: "https://api.github.com/search/repositories", 
    dataType: 'json', 
    delay: 250, 
    data: function (params) { 
     return { 
     q: params.term, // search term 
     page: params.page 
     }; 
    }, 
    processResults: function (data, params) { 
     // parse the results into the format expected by Select2 
     // since we are using custom formatting functions we do not need to 
     // alter the remote JSON data, except to indicate that infinite 
     // scrolling can be used 
     params.page = params.page || 1; 

     return { 
     results: data.items, 
     pagination: { 
      more: (params.page * 30) < data.total_count 
     } 
     }; 
    }, 
    cache: true 
    } 

}); 

이 내가 가진 것입니다 : enter image description here

자바 스크립트 콘솔 및 모든 항목에 오류가 없습니다. 배열 데이터를 사용하면 (즉, select2 가져 오기에 문제가없는 것 같아서) 작동합니다.

문제점이 어디에 있는지 제대로 이해하려면 문제를 더 잘 디버그 할 수있는 방법을 찾아야합니다.

답변

0

도메인 간 요청에 문제가있을 수 있으므로 브라우저 콘솔을 조사해야합니다.

0

내가 예제가 작동하지 않는 이유를 모르지만 select2rails에 구현하기 위해이 스 니펫이 작동 할 수 있습니다. 나는

이것은

VehicleController

에 차량을 검색 할 수있는 방법이다 html selectorurl 옵션

document.addEventListener("turbolinks:load", function(){ 
    if ($(".select-vehicle")) { 
    $(".select-vehicle").select2({ 
     theme: 'bootstrap', 
     allowClear: true, 
     minimumInputLength: 1, 
     dataType: 'json', 
     ajax: { 
     url: '/admin/vehicles/search', 
     delay: 250, 
     data: function(params) { 
      return { vin: params.term } 
     }, 
     processResults: function (data, params) { 
      return { 
      results: $.map(data, function(value, index){ 
       return {id: value.id, text: value.vin}; 
      }) 
      }; 
      cache: true 
     } 
     } 
    }); 
    } 
}) 

을은 .js 파일이 추가 및 변경 gem 'select2-rails', '4.0.3'gem 'rails', '~> 5.0.0'을 사용

def search 
    if params[:vin].present? 
     vehicles = Vehicle.where("vin LIKE ?", "%#{params[:vin]}%") 
     render json: vehicles.map{|v| v.serializable_hash(only: [:id, :vin]) } 
    else 
     render json: [] 
    end 
    end 

이것은 select2의 간단한 구현입니다. 유용한 지 알려주세요.