2010-10-11 9 views
26

Ich habe versucht, auf eine andere Seite nach der Bearbeitung eines Eintrags umleiten, nahm ich an, dass es den Update-Code verwendet, weil Sie die Datenbank aktualisieren. Ich brauchte einige Zeit, um zu erkennen, dass ich die falsche Aktion in der Steuerung verwendete. Kann jemand bitte erklären, wie Bearbeiten und Update funktionieren. Warum gibt es zwei verschiedene Aktionen? Was sind die Unterschiede zwischen ihnen?Restful Rails Edit vs Update

+0

Ich habe Aufgaben, die in zwei verschiedene Kategorien aufgeteilt werden können. Ich habe für jede Kategorie einen Controller erstellt, der für Aufgaben mit demselben Modell verknüpft ist. Wenn ich das Bearbeitungsformular abschicke, wird es zurück zu den Hauptaufgaben geleitet, die die Controller-Aktion zeigen. Es scheint den com_tasks-Controller alle zusammen zu überspringen (com_tasks = einer der Kategorie-Controller). Ich schaute auf die HTML-Ausgabe, die gerendert wird und das Formular wird an den falschen Controller übermittelt, aber ich sehe keine Möglichkeit, das zu ändern. – Rumpleteaser

Antwort

47

bearbeiten Aktion ist verantwortlich für die Darstellung der Ansicht

Update-Aktion für die Interaktion mit dem Modell verantwortlich ist (db Updates usw.)

Wenn Sie rake routes laufen werden Sie den Unterschied zwischen dem Verb sehen und die Aktion. In der Regel werden die Erstellungs-/Aktualisierungsaktionen beim Übermitteln eines Formulars verwendet. Dies unterscheidet sich von den neuen und bearbeiteten Aktionen, da diese zum Rendern der Ansicht verwendet werden (die das zu übergebende Formular anzeigt).

+0

in welcher Reihenfolge heißen sie? Welchen Prozess durchläuft es? Bearbeiten -> Aktualisieren -> Bearbeiten? Wenn ich eine Weiterleitung in Bearbeitung setze, wird es nicht zum Update kommen? – Rumpleteaser

+0

Richtig. Wenn Sie jemanden umleiten möchten * nachdem * einen Eintrag aktualisiert haben, legen Sie die Umleitung in die Aktualisierungsaktion. – theIV

+1

Also nur 2 Ereignisse in dieser Kette: Bearbeiten, die das Formular rendert, dann aktualisieren, wenn der Benutzer es übermittelt. Wenn Sie redirect_to verwenden, um auf eine andere Seite zu wechseln (Standard ist oft die Show-Ansicht in einem Gerüst), dann haben Sie eine dritte Seite. –

13

Eine andere Perspektive - ein wenig redundante Ähnlichkeiten und Unterschiede hervorzuheben:

New ist die Vorstufe Aktion eine Form zu machen, dass bei der Einreichung läuft der Aktion erstellen. (die Ansicht, die typischerweise eine Liste ähnlicher Elemente zurück in die Indexansicht weitergeleitet zeigt Ihnen bereits erstellt)

bearbeiten ist die Vorstufe Aktion eine Form zu machen, dass bei der Übermittlung, läuft die aktualisieren Aktion . (die Ansicht wird normalerweise zurück in die Indexansicht umgeleitet, die eine Liste ähnlicher Elemente anzeigt, die bereits erstellt)