Sorry wg. der Redundanz: will_paginate

Hallo,

das brennt mir so auf den Fingern, daß ich die Frage oder
Problemstellung, die
ich vor einiger Zeit in ähnlicher Form schon mal gestellt habe, nochmal
posten
möchte.

Hier das Problem:

Wenn über eine Standard-create-Methode ein neuer Datensatz angelegt wird,
dann
soll nach Erstellung des Datensatzes dem Nutzer diejenige Seite der
paginierten
Liste angezeigt werden, auf der der neue Datensatz erscheint.

Aus Nutzersicht ist das eigentlich logisch.

Es ist bestenfalls Verwirrend, wenn er nachdem er einen neuen Datensatz
angelegt
hat, auf der ersten Seite landet und nicht auf der Seite, auf der sich
der neue
Datensatz befindet.

Ist das verständlich? Gibt’s überhaupt eine halbwegs praktikable Lösung
dafür?
Viele
Grüße
Michael K.

Hallo Michael,

beim Anlegen müsste er doch IMMER auf der “letzten” Paginationseite
(gibt’s
das Wort?) landen. Das ist doch trivial: Seitenzahl = Model.count
ganzzahlig
geteilt duch Paginationgröße.

Interessanter wird es doch erst beim Editieren. Oder täusche ich
mich…?!

Viele Grüße
Nicolai

Warum sollte er auf der letzten Seite landen? Bei einer Standard rails
create
Methode wird einfach auf list redirected und wenn keine Seite angegeben
ist,
dann landet man auf der ersten Seite.

Count? Klar. Na ja, warum einfach, wenn’s auch kompliziert geht.

Beim editieren ist es kein Problem. Da kann ich entweder die Seite als
Parameter
über die Requests weitergeben oder, wenn man eine Session-Umgebung hat, dann
kann man die Seite auch in der Session ablegen.

Codeblogger schrieb:

Vor lauter Streß vergessen: Vielen Dank!!!

Codeblogger schrieb:

Ja, hat mir in jedem Falle geholfen. Ich hatte count für die Lösung bisher
überhaupt nicht in Betracht gezogen.

Im vorliegenden Fall war die Sortierung nach Produktnummern. Hätte ich mal
noch
explizit angeben sollen.

Viele
Grüße
Michael K.

Codeblogger schrieb:

Eh, vielleicht habe ich mich im morgentlichen Dussel etwas unklar
ausgedrückt:
Die Berechnung von Model.count und so weiter gibt den Index für die
letzte
Seite in der Liste (und da stehen nunmal die neu erstellten Objekte -
zumindest, wenn du nach ID sortieren lässt).

Was mir aus Deiner Antwort nicht klar wird: Hat es etwas geholfen oder
nicht?

Viele Grüße
Nicolai

Ok, dann. Rechnung kommt mit der Post. :wink:
Viel Erfolg noch!

Nicolai

Hallo Nicolai,

ich hatte Deine Lösung etwas zu voreilig überflogen. Sorry!

Deine Lösung nimmt an, daß der Datensatz in der Sortierung immer an letzter
Stelle angehängt wird.

Die Sortierung einer Personenliste könnte aber z.B. nach Nachname, Vorname
stattfinden. Wenn ich nun Fritz Müller eintrage, wie finde ich dann, bei
Nachname, Vorname Sortierung die Nummer der Seite, auf der sich der neue
Eintrag
befindet.

Andersrum: Angenommen, der neue Datensatz befindet sich, nachdem er
erstellt
wurde, eine andere Sortierung als jene nach ids vorausgesetzt, auf Seite
3 von
zehn. Wie finde ich heraus daß sich der Datensatz auf Seite 3 befindet?

Viele
Grüße
Michael

MwSt. nicht vergessen :wink:

Codeblogger schrieb:

Sorry für das Mißverständnis, ich wußte nicht, wie ich das Problem anders hätte
schildern sollen. Von Anwenderseite ist die Anforderung vollkommen
verständlich
und nachvollziehbar.

Man soll die Hoffnung ja nie aufgeben.

Vielen Dank,

Michael

Codeblogger schrieb:

Hallo Michael.

Damit sind wir wieder beim (nach wie vor ungelösten) Problem. Ich hatte
ja
bereits in Klammern mal angedeutet, dass mein Verfahren nur bei
Sortierung
nach ID funktioniert.
Im Prinzip kannst Du aber doch trotzdem ausrechnen, auf welcher Seite in
der
Liste der Eintrag erscheinen wird…

Viele Grüße
Nicolai