2017-02-20 3 views
0

I select2 Version 4.0.3für select2 4.0.3 mit Schienen gespeichert/Anfangswert wiederherstellen

unter Verwendung bin ist mein HTML select-Tag mit Schienen Helfer

<%= f.select(:hotel_id, [], {}, :class => 'select2-autocomplete') %> 

unter meinem Coffeescript ist (Arbeits für Schaffung neuer)

$('.select2-autocomplete').select2 
    multiple: false 
    width: "98%" 
    placeholder: "Type Hotel name" 
    minimumInputLength: 3 
    ajax: 
    url: '/hotels/search_name.json' 
    dataType: 'json' 
    delay: 250 
    data: (params) -> 
     q: params.term 
    processResults: (data, params) -> 
     results: $.map data, (item)-> 
     id: item.id 
     text: item.name 

es vorher getan mit initSelection für select2 Version 3.5.3 aber dann gibt es Änderungen für die Version 4.0.3, und ich die documentation gelesen hat aber st ill hat kein gutes Ergebnis,

mein Problem ist, wenn Benutzer Seite bearbeiten, muss ich vorherige Auswahl Wert wiederherstellen und zeigen es.

Antwort

0

schließlich nach einigem Versuch und Irrtum unten, wie select2 Version 4 verwenden, um den Wert wieder herzustellen, ist es wahrscheinlich nicht sauber, aber es funktioniert

<% if f.object.persisted? && f.object.hotel_id %> 
    <% if f.object.hotel_id > 0 %> 
    <% value = f.object.hotel_id %> 
    <% text = Hotel.find(value).name %> 
    <% end %> 
<% end %> 
<%= f.select(:hotel_id, options_for_select([["#{text}", value.to_s]]), {selected: value}, :class => 'select2-autocomplete') %> 

Die wichtigste Antwort ist unter dem Strich,

  • mit f.select,
  • Option mit option_for_select generieren
  • sicherstellen, dass die Option die Zeichenfolge value.to_s
  • verwendet
  • unter Option Gebrauch {ausgewählt: Wert}

hoffen, dass es anderen Schienen-Benutzer helfen kann, dass mit Ajax-Suche mit select2