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 Kastner
on 2009-03-09 09:41
on 2009-03-09 09:48
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
on 2009-03-09 10:03
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:
on 2009-03-09 10:14
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
on 2009-03-09 10:22
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 Kastner Codeblogger schrieb:
on 2009-03-09 11:35
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
on 2009-03-09 11:39
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
on 2009-03-09 12:01
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:
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.