AJAX-Aufruf zum partiellen Rendern in Rails 3

8

Ich habe eine Dashboard-Seite eines Benutzers, auf der linken Seite eine Seitenleiste mit Links wie Projekte, Blogs usw. Ich möchte in der Lage sein, auf einen Link wie den Link "Projekte" und dann im Hauptbereich auf die Ansicht zu klicken Für Projekte würde laden (Ansicht wäre eine Bullet-Liste von Projekten), ohne die Seite zu aktualisieren. Ich versuche, dies mit AJAX zu erreichen, aber die Dinge funktionieren nicht.

Hier ist, wie ich denke, dass es funktionieren soll. Der Benutzer klickt auf den Seitenleistenlink in show.html.erb

%Vor%

wobei /dash so konfiguriert ist, dass es an Benutzer # in der Datei config/routes.rb wie folgt weitergeleitet wird:

%Vor%

Und dann wird die Aktion show in users_controller.rb controller:

aufgerufen %Vor%

Wo show.js.erb ausgeführt wird. Meine show.js.erb -Datei hat diese eine Zeile:

%Vor%

Und das soll das #ajax div in meinem show.html.erb :

modifizieren %Vor%

Das app/views/projects/index.html.rb nimmt @projekte auf und gibt eine Liste, wie folgt:

%Vor%

Offensichtlich mache ich etwas falsch, weil das nicht funktioniert. Was mache ich falsch? Gibt es Code, den ich anderswo ändern muss? Ich bin auf Rails 3.2.13, also sollten die Zeilen //=jquery und //=jquery_ujs unter app/assets/javascripts/application.js die notwendige jQuery- und AJAX-Funktionalität importiert haben.

    
Jack 22.06.2013, 01:16
quelle

1 Antwort

11

Das Problem ist, dass Sie in Ihrer show.js.erb -Datei versuchen, eine partielle Darstellung zu machen, aber Sie übergeben sie eine Datei, die keine partielle Datei ist. Teildateien beginnen mit einem Unterstrich _ .

Um zu vermeiden, dass Code dupliziert wird, würde ich Folgendes tun:

%Vor%

Außerdem sollten Sie match nicht in Ihren Routen verwenden, da Sie Ihre Routen nie so benötigen, dass sie sowohl von GET- als auch von POST-Methoden erreichbar sind. Versuchen Sie also, get anstelle von match zu verwenden.

    
Ashitaka 22.06.2013 01:28
quelle