0

Ich versuche, jQuery Autocomplete in Rails 3.2.0 einzurichten. Ich habe es funktioniert gut, wenn ich ein Array in Javascript als Datenquelle einrichten. Mein Problem ist, dass die Suchbegriffe irgendwann zu viele werden, um sie beim Laden der Seite zu laden. Ich versuche, die Remote-Datenquelle einzurichten, aber den Inhalt auf der Seite nicht zu füllen.jQuery Autocomplete Multiples mit Remote-Daten über Rails

Die Daten werden zurückgegeben, aber die Auswahlen füllen nicht. Der Großteil dieses Codes stammt direkt von der Demosite der jQuery UI.

Was fehlt mir?

$("#tags") 
    // don't navigate away from the field on tab when selecting an item 
    .bind("keydown", function(event) { 
     if (event.keyCode === $.ui.keyCode.TAB && 
      $(this).data("autocomplete").menu.active) { 
       event.preventDefault(); 
      } 
    }) 
    .autocomplete({ 
     source: function(request, response) { 
      $.getJSON("get/tags", { 
       term: extractLast(request.term) 
      }, response.name); 

      }, 
      search: function() { 
       // custom minLength 
       var term = extractLast(this.value); 
       if (term.length < 2) { 
        return false; 
       } 
      }, 
      focus: function() { 
       // prevent value inserted on focus 
       return false; 
      }, 
      select: function(event, ui) { 
       var terms = split(this.value); 
       // remove the current input 
       terms.pop(); 
       // add the selected item 
       terms.push(ui.item.value); 
       // add placeholder to get the comma-and-space at the end 
       terms.push(""); 
       this.value = terms.join(", "); 
       return false; 
      } 
     }); 
+0

Wo ist die 'extractLast' Funktion? –

+0

Haben Sie sich auch angeschaut, was die AJAX-Anfrage macht? Wie sieht die Antwort in Ihren Entwicklertools aus? –

Antwort

1

Ich habe mein Problem gefunden. Wie dumm von mir. Das Lesen der gesamten Dokumentation zum Autocomplete-Plugin ist hilfreich. Mein Problem war, dass ich kein richtiges "genanntes" JSON-Array zur Verfügung stellte.

vom

ein Array von Objekten mit Etikett und Werteigenschaften jQuery UI Seite

Zitat: [{label: "Choice1", Wert: "Wert1"}, ...]

Schaffung So ist die JSON in Ihrer Rails-Anwendung wie folgt wiedergegeben:

:

def get_tags 
    @tags = Tag.where(['name LIKE ?', "#{params[:term]}%"]) 
    @tags_hash = [] 

    @tags.each do |tag| 
     @tags_hash << { label: tag.name } 
    end 

    render json: @tags_hash 
end 

auch in meinem Code über dem $ .getJSON sollte wie so definiert werden,