TypeAhead.js zeigt keine Ausgangsschienen an?

user3505901

Ich versuche, die automatische Vervollständigung für meine Suchleiste einzurichten, damit Ihnen beim Eingeben der automatischen Vervollständigung Beiträge mit ähnlichen Namen vorgeschlagen werden, damit Sie nicht weiter tippen müssen. Ich erhalte überhaupt keine Ausgabe in der Konsole oder auf andere Weise, auch keine Fehler in der Chrome-Konsole.

Ich habe mehrere Tutorials verwendet, um dies einzurichten. Aber hier ist die, nach der ich am meisten gesucht habe:

Tutorial Eins

Tutorial Zwei

TypeAhead.js

Ein Link zum Github meines Projekts, falls ihr weitere Informationen benötigt

Beide haben ähnliche Ansätze, um dies einzurichten, also dachte ich mir, dass das in Ordnung wäre. Aber ich bin immer noch nicht in der Lage, die automatische Vervollständigung überhaupt zum Laufen zu bringen.

Wenn ich renne:

bundle exec rake routes

Ich bekomme das, was es so aussehen lässt, als gäbe es keinen Autocomplete-Pfad, aber es sollte einen haben, da ich die Autocomplete-Methode in meiner Listing_Controller.rb erstellt habe, nein? ::

like_listing_comment PUT      /listings/:listing_id/comments/:id/like(.:format)   comments#upvote
  unlike_listing_comment PUT      /listings/:listing_id/comments/:id/unlike(.:format) comments#downvote
    listing_comments GET      /listings/:listing_id/comments(.:format)            comments#index
                     POST     /listings/:listing_id/comments(.:format)            comments#create
 new_listing_comment GET      /listings/:listing_id/comments/new(.:format)        comments#new
edit_listing_comment GET      /listings/:listing_id/comments/:id/edit(.:format)   comments#edit
     listing_comment GET      /listings/:listing_id/comments/:id(.:format)        comments#show
                     PATCH    /listings/:listing_id/comments/:id(.:format)        comments#update
                     PUT      /listings/:listing_id/comments/:id(.:format)        comments#update
                     DELETE   /listings/:listing_id/comments/:id(.:format)        comments#destroy
        like_listing PUT      /listings/:id/like(.:format)                        listings#upvote
      unlike_listing PUT      /listings/:id/unlike(.:format)                      listings#downvote
     search_listings GET      /listings/search(.:format)                          listings#search
   autocomplete_listings GET      /listings/autocomplete(.:format)                    listings#autocomplete
            listings GET      /listings(.:format)                                 listings#index
                     POST     /listings(.:format)                                 listings#create
         new_listing GET      /listings/new(.:format)                             listings#new
        edit_listing GET      /listings/:id/edit(.:format)                        listings#edit
             listing GET      /listings/:id(.:format)                             listings#show
                     PATCH    /listings/:id(.:format)                             listings#update
                     PUT      /listings/:id(.:format)                             listings#update
                     DELETE   /listings/:id(.:format)                             listings#destroy

route.rb

resources :listings do
resources :comments do
  member do
    put "like" => "comments#upvote"
    put "unlike" => "comments#downvote"
  end
end

member do
  put "like" => "listings#upvote"
  put "unlike" => "listings#downvote"
end

collection do
  get 'search'
  get :autocomplete 
end

Ende

Bei der Autocomplete-Methode in meiner listings_controller.rb werden Sie feststellen, dass ich meine Abfragesuche anstelle der Abfrage wie im Beispiel benannt habe, da meine Suchleiste den Namen search hat und die Abfrage so benannt ist.

def search
if params[:search]
  @listings = Listing.search(params[:search])
else
  @listings = Listing.all
end
end
def autocomplete
render json: Listing.search(params[:search], autocomplete: false, limit: 10).map do |listing|
  { title: listing.title, value: listing.id }
end
 end

private

# Use callbacks to share common setup or constraints between actions.
def set_listing
  @listing = Listing.find(params[:id])
end

# Never trust parameters from the scary internet, only allow the white list through.
def listing_params
  params.require(:listing).permit(:name, :code, :language, :private)
end

Ich bin mir nicht sicher, warum es nicht funktioniert. Kann jemand bitte einen Blick darauf werfen? Ich habe das Gefühl, dass mir etwas fehlt. Möglicherweise fehlen den Tutorials, die ich verwendet habe, etwas.

BEARBEITEN: Ich habe in einem Beitrag festgestellt, dass jemand versucht hat, seinen Autocomplete-Link zu besuchen, und dass er JSON auf seiner Webseite zurückgibt. Meins ist es jedoch nicht. Als ich versuchte und besuchte: http: // localhost: 3000 / listings / autocomplete? Query =% Untitl Ich sollte einen JSON-Text mit vielen Dingen erhalten, da ich Tonnen von Einträgen mit dem Namen Untitled habe.

Aber meine Konsole zeigt einen langen Fehler:

2016-04-16 20:08:22 -0500: HTTP-Analysefehler, fehlerhafte Anforderung (): #

2016-04-16 20:08:22 -0500: ENV: {"Rack.Version" => [1, 3], "Rack.Fehler" => #>, "Rack.multithread" => true, "Rack .multiprocess "=> false, "ack.run_once" => false, "SCRIPT_NAME" => "", "QUERY_STRING" => "", "SERVER_PROTOCOL" => "HTTP / 1.1", "SERVER_SOFTWARE" => "3.1 .0 "," GATEWAY_INTERFACE "=>" CGI / 1.2 "," REQUEST_METHOD "=>" GET "," REQUEST_PATH "=>" / listings / autocomplete "}

listings.js, ich habe die Wortbücher in Listings geändert und auch versucht, die Zeile zu ändern: url: '../listings/autocomplete?query=%QUERY'to url:' ../listings/autocomplete?search=%SEARCH ',' ../listings/autocomplete?search=%QUERY ',' ../listings/autocomplete?query=%SEARCH 'und keiner von diesen hat auch funktioniert.

var ready;
ready = function() {
var engine = new Bloodhound({
    datumTokenizer: function(d) {
        console.log(d);
        return Bloodhound.tokenizers.whitespace(d.title);
    },
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: {
        url: '../listings/autocomplete?query=%QUERY'
    }
});

var promise = engine.initialize();

promise
    .done(function() { console.log('success })
    .fail(function() { console.log('err });

$('.typeahead').typeahead(null, {
    name: 'engine',
    displayKey: 'title',
    source: engine.ttAdapter()
});
}

$(document).ready(ready);
$(document).on('page:load', ready);

EDIT: Ich denke, es gibt möglicherweise ein Problem mit dem Javascript. Im Atom Text Editor wird der Erfolg in diesem Teil hervorgehoben:

promise
    .done(function() { console.log('success })
    .fail(function() { console.log('err });

Ich habe versucht, dies zu ändern:

promise
    .done(function() { console.log('success' });
    .fail(function() { console.log('err' });

Aber das Problem bleibt bestehen, ich kenne Javascript nicht sehr gut, aber diese Zeile soll nur Erfolg oder Fehler auf der Konsole ausdrucken, oder? Nichts anderes, also sollte es nichts bewirken?

Markt

Die URL-Bezeichnung sollte nicht die 2 Punkte haben.

    url: '../listings/autocomplete?query=%QUERY'

sollte sein

    url: '/listings/autocomplete?query=%QUERY'

Beispiel-App zum Tutorial: https://github.com/trh/rails-typeahead-sample-app

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  3. 3

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  4. 4

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  7. 7

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  8. 8

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  9. 9

    Eclipse Oxygen - Projekte verschwinden

  10. 10

    Wie wählt man Unterschiede mit drei Tabellen aus?

  11. 11

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  12. 12

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  13. 13

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  14. 14

    Wie kann ich den Kaskadenmodus global einstellen?

  15. 15

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  16. 16

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  17. 17

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  18. 18

    Was ist schneller: SUM über NULL oder über 0?

  19. 19

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  20. 20

    Kann ich ein Tkinter-Canvas erstellen, das mehrere Zeilen in einem Text-Widget umfasst?

  21. 21

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

heißlabel

Archiv