2017-02-18 2 views
0

Я использую Select2-rails 3.5.3, я могу выполнить поиск с удаленных данных и сохранить его, проблема в том, как я могу восстановить выделенный текст (например, если пользователь нажмет на редактирование) , проблема: initSelection не срабатывает, когда форма загружается редактироватьselect2 initSelection for redisplayed form

ниже мой код

hotelcheck.coffee

$('.select2-autocomplete').each (i, e) -> 
    select = $(e) 
    options = { 
    multiple: false 
    width: "98%" 
    placeholder: "Type Hotel name" 
    minimumInputLength: 3 
    } 
    options.ajax = 
    url: select.data('source') 
    dataType: 'json' 
    type: "GET" 
    quietMillis: 250 
    # input untuk program 
    data: (term, page) -> 
     { q: term, 
     page: page, 
     per: 25 } 
    results: (data) -> 
     { results: $.map(data, (item) -> 
     { 
      text: item.name 
      id: item.id 
     } 
    ) } 
    initSelection: (element, callback) -> 
     id = $(element).val() 
     if id != '' 
     $.ajax('/hotels/' + id + '.json', dataType: 'json').done (data) -> 
      selected = 
      id: element.val() 
      text: data.name 
      callback selected 
      return 
     return 
    options.dropdownCssClass = 'bigdrop' 
    select.select2 options 

форму, чтобы показать скрытое поле, я сохранить содержимое в hotel_id

<%= f.hidden_field :hotel_id, data: { source: search_name_hotels_path }, class: "select2-autocomplete", :value => "#{f.object.hotel_id unless f.object.new_record? || f.object.hotel_id.nil? }" %> 

контроллер отель AJAX отправить значение

def show 
    @hotel = Hotel.find(params[:id]) 
    puts "running fill name" 

    respond_to do |format| 
    format.json { render json: @hotel } 
    end 
end 
  • источник данных = отель таблицы с полем ID, имя
  • клиента таблицы = порядка с полем hotel_id

ответ

0

От this page, это выглядит как initSelection не должно быть в options.ajax, но только в options. Я бы попытался скопировать пример, который у них есть, и отредактировать его в соответствии с вашими потребностями. ИЛИ обновите до 4.0.0, что кажется намного проще.

+0

да, вы правы Я просто перевел initselection под опции и это работа, много спасибо – widjajayd