it-swarm.com.de

Anpassen von Geräteansichten in Rails

Ich verwende devise für die Benutzerauthentifizierung, habe aber nette Modelle für die Anmelde-, Anmeldeseiten usw. Ich habe bereits die Rails generate devise:views User befehle und habe alle ansichten im ansichtenordner, aber als ich die registration/new.html.erb durch meine eigene new.html.erb ersetzte, ändert sich nichts und sieht auch nicht anders aus. Es ist, als hätte ich etwas getan.

Jeder weiß, was ich falsch mache oder zumindest, wie man die Geräteansichten erfolgreich anpasst

P.S. Ist es wichtig zu beachten, dass ich die Route der Erstellung/Registrierung # neu in/Anmeldung geändert habe?

69
Vasseurth

Ihre Route signup oder devise/registrations#new Ergibt die Ansicht views/devise/registrations/new.html.erb. Es hört sich so an, als hätten Sie Änderungen an views/user/registrations/new.html.erb Vorgenommen, was erklären würde, warum Sie die vorgenommenen Änderungen nicht sehen, da sie nicht gerendert werden.

Sie müssen entweder einen user/registrations_controller.rb Erstellen, der sich von Devise::RegistrationsController Erstreckt, und Ihre /signup - Route auf user/registrations#new Verweisen, oder Sie können Ihre Änderungen direkt auf views/devise/registrations/new.html.erb

Dieselbe Idee gilt für Ihre Anmeldeseiten (devise/sessions).

Hoffe das hilft.

30
Kevin Tsoi

auf einen Blick antworten.

...anstatt

Rails generate devise:views User

verwenden:

Rails generate devise:views

Wenn Sie dies bereits getan haben, verschieben Sie die von app/views/User Erstellten Ordner in einen neuen Ordner app/views/devise (Oder benennen Sie den Ordner User einfach in devise um. wenn das eine Option ist.)

Diese Ordner sind:

app/views/User/confirmations
app/views/User/mailer
app/views/User/passwords
app/views/User/registrations
app/views/User/sessions
app/views/User/shared
app/views/User/unlocks

Es sind keine weiteren Änderungen erforderlich.

118
ocodo

obwohl dies eine alte Frage ist, dachte ich, ich würde sie ergänzen, falls jemand darüber stolpert. Ich bin nicht sicher, ob dies eine Neuerung ist, da die Frage ursprünglich gestellt wurde, aber wenn ja, ist dies der einfachere (modernere) Ansatz.

in der Datei config/initializers/devise.rb Es gibt den folgenden Codeblock:

# ==> Scopes configuration
# Turn scoped views on. Before rendering "sessions/new", it will first check for
# "users/sessions/new". It's turned off by default because it's slower if you
# are using only default views.
# config.scoped_views = false

durch das Auskommentieren von config.scoped_views = false und ändern Sie den Wert in true, prüft devise automatisch, ob die benutzerdefinierte Ansicht vorhanden ist, und wenn ja, stellen Sie diese bereit. Wie es heißt, fügt es der Anwendung etwas Overhead hinzu, aber nach meiner bisherigen Erfahrung ist dies minimal.

104
DazBaldwin

Für alle, die noch ein Problem damit haben, liegt das Problem im Aufruf an Rails generate devise:views User. Es sollte sein Rails generate devise:views zum Abrufen der aktuellen Ansichten von der Devise Rails Engine. Dadurch werden die richtigen Ansichten generiert, die mit den Standardrouten funktionieren.

24
Marcus W

Nach dem Generieren Ihrer benutzerdefinierten Ansichten, z

Rails generate devise:views User

Anschalten scoped_views im config/initializer/devise.rb

view config.scoped_views = true

Und du bist fertig.

19
Saqib R.

Mit Rails g devise:views User können Sie anpassen, wenn Sie mehr als eine Rolle haben.

der richtige Weg, dies zu tun, ist in Ihrem devise.rb im config/initializer/ Mappe

und auskommentieren und einstellen config.scoped_views = true.

jetzt können Sie die Ansicht erb-Dateien problemlos bearbeiten

10
Richard Lau

Ich hatte das gleiche Problem, bis ich zurückkam und die Gerätedokumentation las :)

Stellen Sie nach Rails generate devise:views Sicher, dass Sie in initializers/devise.rb Gehen und config.scoped_views = true Einstellen. Dies wird in der Gerätedokumentation unter https://github.com/plataformatec/devise sowie in den Kommentaren devise.rb Erläutert.

Danach tauchten meine eigenen Ansichten in views/users Anstelle der Ansichten im Edelstein auf.

10
guero64

Zum späteren Nachschlagen können Sie einfach den Ordner von devise => user umbenennen und umgekehrt und Rails findet eine Route.

2
user1349666