Wie werden zwei paginierte und ajaxable Sammlungen in der gleichen Ansicht gerendert?

8

In einer Rails 3.2-Indexansicht rende ich zwei Teiltöne.

%Vor%

und im partiellen

%Vor%

Die Seitennummerierung funktioniert nicht.

Wenn ich will_paginate auf eine Instanzvariable ändere, funktioniert die Paginierung (aber die falsche Sammlung)

%Vor%

Wie kann ich Locals an will_paginate übergeben, wenn der Partial aufgerufen wird?

(Mir ist klar, dass ich auch :param_name übergeben muss, damit das mit zwei Sammlungen funktioniert. Im Moment versuche ich nur, dass eine Instanz funktioniert.)

Die partielle wird über index.js.erb

gerendert %Vor%

Und der Controller sieht aus wie

%Vor%

Danke für Ideen.

    
Andy Harvey 15.05.2012, 09:31
quelle

3 Antworten

4
  1. Sie müssen sicherstellen, dass der Controller weiß, welche Seitenverknüpfung von welche Liste Sie drücken. Wir tun dies, indem wir einen Parameter an den Linkgenerator von will_paginate übergeben.
  2. Sie müssen sicherstellen, dass Ihre js das korrekte HTML-Tag aktualisiert, wenn Sie die Seitennummerierung eines Eintrags aktualisieren. Wir tun dies, indem wir die Seitennummerierung in ein stimmungsabhängiges :) div-Tag einfügen.
  3. Da wir die partielle teilen, müssen wir sicherstellen, dass sowohl die Stimmung als auch die korrekte Sammlung im Controller gesetzt und von den Indexansichten (sowohl html als auch js) teilweise als lokal übergeben werden.
  4. schließlich stellen Sie sicher, dass Ihre Ajax-Fernbedienung aufnimmt, nachdem Sie die Paginierung neu gezeichnet haben (dies ist ein Bonus)

also, um Controller-Instanzvariablen abhängig vom Parameter für die Anfragestimmung

festzulegen
  • Beachten Sie, dass Ihnen dieser Code auch einige db-Aufrufe erspart, denn wenn Sie nur traurige Benutzer paginieren, müssen Sie keine glücklichen oder alle abrufen.
  • Ich gebe @users zur Vereinfachung aus, es wird nie benutzt
  • Ich vermute, glücklicher Spielraum für traurige Benutzer ist nur ein Tippfehler

.

%Vor%

Stellen Sie sicher, dass wir die richtigen Ortsansässigen zu Teilnahmen schicken:

%Vor%

macht teilweise stimmungssensitiv und erlaubt eine eindeutige div tag id. Stellen Sie auch Stimmung in Anfrage URL.

%Vor%

Diese js ermöglicht das Auffrischen verschiedener Sammlungen in verschiedenen Divs, je nachdem, welcher Paginierungslink gedrückt wurde.

%Vor%

Für unaufdringliche Ajax-Links zur Paginierung benötigen Sie. Ruby - Rails 3 - AJAXinate Paginieren und Sortieren

%Vor%

Beachten Sie, dass die Lösung auch funktionieren sollte, wenn JavaScript nicht aktiviert ist und wir auf HTML zurückgreifen. In diesem Fall sollten beide Abschnitte erneut angezeigt werden, um verschiedene Seiten zu ermöglichen.

MODIFIZIERTER CODE, UM DEN GRACEFUL JS-FALLBACK ZU HTML ZU BEWEGEN

Controller

%Vor%

neue Ansicht vars zu partiellen lokalen weiterleiten

%Vor%

müssen wir hier nur übergeben, um nicht undefinierte Methode in Teil zu erhalten.

%Vor%

Dies wird dann glückliche Seiten in Param beibehalten, wenn der Link auf eine traurige Seite geklickt wird, und umgekehrt.

%Vor%     
Viktor Trón 30.05.2012, 12:52
quelle
0

Zuerst erstellen Sie im Controller zwei verschiedene Methoden für jede Liste, zum Beispiel fill_list1 und fill_list2, die unabhängig von der Methode sind, um die Hauptseite zum Beispiel index

zu erstellen

Jede Listenmethode muss eine partielle Darstellung ohne Layout wiedergeben, zum Beispiel

%Vor%

Die Hauptseite muss erstmals Teiltafeln in Sicht aufrufen.

Wenn Sie in die Steuerung für die Seitenumbruch klicken, müssen Sie klicken, um die Liste der nächsten Seitenumbruchliste aufzurufen

%Vor%     
vicosanz 06.06.2012 15:54
quelle
-1

Übergeben Sie die richtigen Locals in index.html.erb :

%Vor%     
gmile 15.05.2012 10:06
quelle