Select2 несколько данных ajax не загружаются при втором выборе

У меня есть несколько select2, которые используют ajax для получения данных. Проблема в том, что я могу выбрать тег в первый раз, но когда я пытаюсь второй раз, он не показывает данные ajax. Запрос работает, и данные есть, и я вижу из сетевой консоли Chrome. Это то же самое, что и первый запрос, но select2 не показывает данные - не могу найти поисковый запрос, который я написал. Раньше этот код работал, он перестал работать после того, как я перешел на Rails4. Я использую select2-rails, но на самом деле пробовал его и с последней библиотекой select2 js. Те же результаты

Коффескрипт

  if $("#categories").val().length is 0 
    $("#categories").val "initialValue"
  $("#categories").select2
    closeOnSelect:false
    containerCssClass: "select2-default"
    formatNoMatches: ->
      I18n.t "shared.navbar.no_matches_found"
    formatInputTooShort: (input, min) ->
      I18n.t("shared.navbar.please_select") + " " + (min - input.length) + " " + I18n.t("shared.navbar.more_characters")
    formatSelectionTooBig: (limit) ->
      I18n.t("shared.navbar.you_can_only_select") + " " + limit + " " + I18n.t("shared.navbar.item") + ((if limit is 1 then "" else "s"))
    formatLoadMore: (pageNumber) ->
      I18n.t "shared.navbar.loading_more_results"
    formatSearching: ->
      I18n.t "shared.navbar.searching"
    minimumInputLength: 3
    width: "100%"
    multiple: true
    ajax:
      url: "/categories/list_styles"
      dataType: "json"
      quietMillis: 100
      data: (term, page) ->
        q: term
        page_limit: 10
        page: page
      results: (data) ->
        hashtable = {}
        results = []
        $.each data, (index, item) ->
          if hashtable[item.parent] is `undefined`
            hashtable[item.parent] =
              text: item.parent
              children: []
            results.push hashtable[item.parent]
          hashtable[item.parent].children.push
            id: item._id
            text: item.title
        results: results        
    initSelection: (element, callback) ->
      data1 = []
      if element.val() is "initialValue"
        element.val('')
      jQuery(element.val().split(",")).each ->
        $.ajax
          type: "get"
          url: "/providers/list_categories"
          async: false
          dataType: "json"
          data: { id: $("#provider_id").val(), selected: $("#categories").val().split(",") }
          success: (category) ->
            $.each category, (i, obj) ->
              data1.push
                id: @_id
                text: @title
        callback data1
  $.each $(".select2-container"), (i, n) ->
    $(n).next().show().fadeTo(0, 0).height("0px").css "left", "auto" # make the original select visible for validation engine and hidden for us
    $(n).prepend $(n).next()
    $(n).delay(500).queue ->
      #$(this).removeClass "validate[required]" #remove the class name from select2 container(div), so that validation engine dose not validate it
      $(this).dequeue() 

Контроллер

  def list_styles  
     if params[:q].present?
        @categories = Category.search(params[:q], page: params[:page])
        respond_with @categories 
     end
  end

person Caner Çakmak    schedule 17.04.2014    source источник


Ответы (1)


Что ж, это оказался совсем другой вопрос. Каким-то образом Mongoid 4 через searchkick отправил данные в формате $ oid. Я создал инициализатор монгоида и разместил этот код, и все начало работать ...

module BSON
  class ObjectId
    def to_json(*args)
      to_s.to_json
    end

    def as_json(*args)
      to_s.as_json
    end
  end
end
person Caner Çakmak    schedule 17.04.2014