Ich habe neue Rails-Projekt mit nur einem generierten Controller für eine Homepage erstellt, um dies zu testen.Warum leitet Devise sign_up-Fehler auf eine andere Seite um?
Ich bin ein Modell ist User
, so die Anmeldeseite ist http://localhost:3000/users/sign_up
.
Wenn ich einen Fehler auslösen, zum Beispiel das Formular ohne Angabe von Passwort, werde ich auf http://localhost:3000/users
weitergeleitet.
Wie kann ich auf http://localhost:3000/users/sign_up
bleiben, nachdem ich Fehler gemacht habe?
Ich lese this question und the only answer schlägt vor, redirect_to :back
in der Steuerung zu verwenden.
Das Problem ist, dass ich den Controller nicht überschreibe. Wenn das Überschreiben die einzige Lösung ist, erläutern Sie bitte, wie es sein sollte.
Das ist mein routes.rb
Rails.application.routes.draw do
root to: "home#index"
get 'home/index'
devise_for :users
end
Here der Quellcode Devise::RegistrationsController
ist. Wie sollte ich new
oder create
überschreiben, um zu erreichen, was ich brauche?
es ist Standardverhalten von Schienen. Tritt ein Fehler auf, wird das Formular erneut gerendert. also bleiben alle Werte der Form gleich. Wenn Sie Redirect zurück verwenden und ein Fehler auftritt, wird ein neues Formular angezeigt. Alle Werte des Formulars werden zerstört – Vishal
Es macht das Formular wieder, das ist richtig. Das Problem ist, dass die URL von '/ users/sign_up' zu'/users' wechselt. – Wit
Können Sie die Routen (und Controller/Aktionen), die für die Entwicklung in Ihrer App spezifisch sind, veröffentlichen? – BigJ