Ich versuche, ein anderes / benutzerdefiniertes Layout mit dem Namen "devise" für die Aktion "sign_in" zu verwenden. Ich habe diese Seite im Entwickler-Wiki gefunden, und das zweite Beispiel besagt sogar, dass Sie es pro Aktion (in diesem Fall sign_in
Aktion) ausführen können, aber es zeigt kein Beispiel dafür. Jemand im IRC sagte mir, ich könnte das versuchen:
class ApplicationController < ActionController::Base
protect_from_forgery
layout :layout_by_resource
def layout_by_resource
if devise_controller? && resource_name == :user && action_name == 'sign_in'
"devise"
else
"application"
end
end
end
Es scheint jedoch nicht zu funktionieren, da immer noch das Standardanwendungslayout geladen wird. Ich würde mich über jede Hilfe freuen.
quelle
Ich habe gerade app / views / layouts / devise / session.html.erb erstellt und mein Layout dort eingefügt.
quelle
Ich habe es herausgefunden, aber ich werde diese Frage hier behalten, falls andere neugierig sind.
Es war ein dummer Fehler. Tatsache ist
sign_in
der Weg, nicht die Handlung. Wenn ich mir die relevante Quelle ansehe , kann ich sehen, dass die erforderliche Aktion darin bestehtnew
, eine neue Gerätesitzung zu erstellen . Ändern der Bedingung meines obigen Codes in:Funktioniert wunderbar.
Hoffe das hilft jemandem da draußen.
quelle
Die mit Abstand einfachste Lösung besteht darin, einfach ein Layout mit dem Namen devise.html.haml in Ihrem Ordner app / views / layouts zu erstellen. und die Rails-Magie kümmert sich um den Rest.
quelle
So habe ich es gemacht. Ich wollte ein anderes Layout, wenn sich der Benutzer anmelden musste, aber ein anderes Layout, wenn der Benutzer sein Profil bearbeiten musste.
Ich benutze Rails 4.1.1
Fügen Sie im Anwendungscontroller Folgendes hinzu:
quelle
Überrascht, diese Antwort nirgendwo zu sehen, aber Sie können auch Folgendes tun:
Ändern Sie in route.rb Ihre Gerätekonfiguration so, dass sie ungefähr so aussieht:
Dann in app / controller / session_controller.rb
Dies ist besonders nützlich, wenn Sie zusätzliche Logiküberschreibungen in einem der Devise-Controller durchführen müssen.
quelle
Nur für den Fall, dass Sie es nicht wussten, können Sie auch
rake routes
die Routen in Ihrer Rails-App zusammen mit der Aktion / Steuerung anzeigen, der sie zugeordnet sind.quelle
Hier ist ein Einzeiler für diejenigen, die möchten, dass alle erarbeiteten Aktionen ein neues Layout verwenden:
quelle