2016-05-11 16 views
0

Problem: Ich verwende die after_sign_up_path_for(resource) Methode von Devise, aber ich kann nicht scheinen, um den Benutzer auf die angegebene Seite umgeleitet, nachdem sie sich anmelden. Momentan erhalte ich einen Template Missing Fehler mit der URL www.localhost:3000/users. Im Idealfall würde Ich mag die Benutzer zu www.localhost:3000/subscribers/newDevise nicht auf angegebene Seite nach Benutzeranmeldung

registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController 
    def create 
    @user = User.new(sign_up_params) 
    @domain = @user.email.split('@').last 
    @company = Company.find_by_domain(@domain) 
    @user.company_id = @company.id 

    if @user.save 
     after_sign_up_path_for(@user) 
    else 
     render 'new' 
    end 
    end 

    private 

    def sign_up_params 
     params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation, :participation_code, :company_id) 
    end 


    protected 

    def after_sign_up_path_for(resource) 
     "/subscribers/new" 
    end 
end 

routes.rb

... 
devise_for :users, controllers: { registrations: "registrations" } 
... 

Fehlerprotokoll weitergeleitet habe ich dir:

Template is Missing 

Missing template registrations/create, devise/registrations/create,  
devise/create, application/create with {:locale=>[:en], :formats= 
[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, 
:coffee, :arb, :haml, :jbuilder]}. 

UPDATE: Ich habe versucht, die after_sign_up_path_for(resource) auf die ApplicationController zu verschieben, aber immer noch das gleiche Ergebnis.

Antwort

0

Sehr interessant after_sign_up_path_for. Ich habe einfach

geändert
def create 
... 
end 

zu ...

def update 
... 
end 

Jetzt ist alles perfekt funktioniert und mein after_sign_up_path_for(resource) Methode erkannt wird.

-1

unten Methode in der Anwendung Controller hinzufügen

Devise: Wo Benutzer umleiten, wenn sie in

def after_sign_up_path_for(resource) 
    "http://www.google.com" # <- Path you want to redirect the user to. 
end 
+0

Ich habe das schon versucht und habe das gleiche Ergebnis. Ich habe meinen Beitrag aktualisiert, um dies zu berücksichtigen. – szier

+0

Sie haben einen fehlenden Template-Fehler, oder es wird nicht auf den Pfad umgeleitet? Kannst du deine Frage einfügen? –

+0

Ich habe meinen Beitrag aktualisiert, um das Protokoll einzubeziehen – szier

-1

Vielleicht lohnt es redirect_method in after_action zu setzen angemeldet haben: Rückruf erstellen?

-1

Sie nicht Controller erstellen müssen Sie Benutzer zu bestimmten Pfad umleiten

def after_sign_in_path_for(resource) 
    your_path 
end 

erinnern Verwendung durch die Definition after_sign_in_path_for nicht

Verwandte Themen