2016-11-23 22 views
0

私のユーザーモデルに誕生日があり、Facebookでサインインした後に空白の場合は編集ページにリダイレクトしようとしています。私のアプリケーションコントローラafter_sign_in_path_for(リソース)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".

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 

と私のOmniauthコントローラ:

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 

答えて

0

これはトリックを行う必要があります。

を私は、リソースのafter_sign_in_pathを上書きしようとしたが、このエラーを取得しておきます
def after_sign_in_path_for(resource) 
    if resource.birthday.blank? 
     edit_user_registration_url 
    else 
     super 
    end 
end 
関連する問題