2016-06-13 2 views
0

select2을 사용하여 양식에 아약스 검색을 호출합니다. 양식은 내 아약스로 응답을 얻을 수 없습니다, 나는 우편 배달부에서 내 브랜드 방법을 테스트하고, 그것은 json을 반환 할 수 있으므로 내 대답에 문제가 있는지 궁금합니다 .js 또는 입력? 이전에 내가 함께 테스트 :레일 2 선택이 작동하지 않습니다

샘플 입력

<%= f.select :brand_id, Brand.all.collect {|x| [x.name, x.id]}, {include_hidden: false} %> 

그것은 수 검색 브랜드 테이블 내부의 모든 데이터입니다.
products_controller.rb

def brand 
    @brands = Brand.select(:id, :name).where("name like :q", q: "%#{params[:q]}%") 
    respond_to do |format| 
     format.json { render json: {brands: @brands.map { |e| {id: e.id, name: e.name} }} 
     } 
    end end 

입력 양식은

<%= f.hidden_field :brand_id, class: "brand-select", data: { source: dashboard_brand_path, placeholder: 'Search for a name' } %> 

당신은 hidden_field을 사용했다

답변

0
<%= f.hidden_field :brand_id, class: "brand-select", data: { source: dashboard_brand_path, placeholder: 'Search for a name' } %> 

을 돕는

$(".brand-select").select2({ 
    minimumInputLength: 1, 
    placeholder: "Brand search", 
    theme: "bootstrap", 
    tags: [], 
    ajax: { 
     url: "/dashboard/brand", 
     dataType: 'json', 
     type: "GET", 
     quietMillis: 50, 
     id: function(obj) { 
      return obj.id; 
     }, 
     data: function (term) { 
      return { 
      q: params.term, // search term 
      page: params.page 
      }; 
     }, 
     results: function (data) { 
      return { 
       results: $.map(data, function (item) { 
        return { 
         name: item.name, 
         id: item.id 
        } 
       }) 
      }; 
     } 
    }, 
}); 

감사를 application.js. 나는 당신이 사용해야한다고 생각한다.

+0

나는 이것을 시도한다. 그러나 그것은 2 개의 입력을 보여준다. Select2 입력은 여기에서 보이지 않게됩니다. 브랜드는 데이터베이스가 많아서 Ajax를 사용해야 할 수도 있습니다. 그러면 Brand.all과 함께 전체 테이블로드 시간이 걸립니다. 대답 해줘서 고마워. –

+0

대신 $ (".brand-select") .select2 ({}); $ ("# select-id")를 사용하십시오. 이것이 귀하의 문제를 해결할 수 있습니다. 하나만 원한다면 하나의 선택 상자 만 유지하십시오. – Omkar

+0

나는 여기에서도 예제를 복사하여 https://select2.github.io/examples.html#data-ajax를 사용하지 않으려 고 시도했다. –

관련 문제