2014-12-11 6 views
5

verlängert ich die Standard-Devise RegistrationsController mit Routen:Devise Ressource und resource_name Helfer in benutzerdefinierten Controller

# use my own controller for devise registrations 
devise_for :users, :controllers => { registrations: 'registrations' } 

In diesem Controller, ich habe eine Methode new_from_invitation genannt. Mit dieser Methode wird ein benutzerdefiniertes Anmeldeformular angezeigt, wenn der Benutzer eine Einladung erhält.

Ich habe die Datei devise/registrations/new.html.erb kopiert. So sieht mein benutzerdefiniertes Anmeldeformular wie folgt aus:

Dies wirft einen ArgumentError, weil Ressource Null ist. Wie der Name der Ressource. Irgendwie sind die Ressource und ressource_name Helfer in der Standard-Devise/Registrierungen/neue Methode verfügbar, aber ich kann nicht herausfinden, wie. Und deshalb kann ich keine Möglichkeit finden, diese Helfer für meine benutzerdefinierte Methode zur Verfügung zu haben. Jede Hilfe würde sehr geschätzt werden!

Antwort

3

Fügen Sie diese auf Ihre Anwendungshilfsdatei:

def resource_name 
    :user 
    end 

    def resource 
    @user ||= User.new 
    end 
    def devise_mapping 
    @devise_mapping ||= Devise.mappings[:user] 
    end 
+0

Hey, Vielen Dank für Ihre Antwort. Eigentlich habe ich diese Zeilen bereits in ApplicationHelper. Und es scheint nicht zu funktionieren. – MonsieurNinja

+0

Können Sie den genauen Fehler geben, den Sie bekommen? –

+0

Ich habe es gerade funktioniert, indem ich: ** helfer ApplicationHelper :: ApplicationHelper ** an der Spitze von RegistrationsController. Aber das fühlt sich nicht richtig an. Sollte der Controller nicht automatisch die Methoden des Helfers sehen? – MonsieurNinja