2016-11-23 3 views
0

Mein Benutzermodell hat Geburtstag und ich versuche, auf die Bearbeitungsseite umzuleiten, wenn sie nach der Anmeldung bei Facebook leer ist. Ich habe versucht, das Überschreiben der after_sign_in_path für Ressource, sondern halten diesen Fehler:after_sign_in_path_for (Ressource) devise + facebook omniauth

Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".

My Application Controller:

class ApplicationController < ActionController::Base 
    # Prevent CSRF attacks by raising an exception. 
    # For APIs, you may want to use :null_session instead. 
    protect_from_forgery with: :exception 

    def after_sign_in_path_for(resource) 
    stored_location_for(resource) || 
    if resource.birthday.blank? 
     redirect_to edit_user_path(resource) 
    end 
    super 
    end 
end 

und meine Omniauth Controller:

class OmniauthCallbacksController < ApplicationController 
    skip_before_filter :authenticate_user! 

    def provides_callback_for 
    user = User.from_omniauth(env["omniauth.auth"], current_user) 
    if user.persisted? 
     flash[:notice] = "You have signed in!" 
    sign_in_and_redirect(user) 
    else 
     session['devise.user_attributed'] = user.attributes 
     redirect_to new_user_registration_url 
    end 
    end 

    def failure 
    flash[:notice] = "Something went wrong!" 
    redirect_to root_path 
    end 

    alias_method :facebook, :provides_callback_for 
end 

Antwort

0

Diese den Trick tun sollten:

def after_sign_in_path_for(resource) 
    if resource.birthday.blank? 
     edit_user_registration_url 
    else 
     super 
    end 
end 
Verwandte Themen