だから私は、ユーザーが「ログイン」をクリックする前に見ていたページに戻ろうとしています
これは、ユーザー アプリケーション コントローラーで取得したものです。
def redirect_back_or_default(default)
redirect_to(session[:return_to] || default)
session[:return_to] = nil
end
そして、これは私がセッションコントローラーに持っているものです:
def new
@user_session = UserSession.new
session[:return_to] = request.referer
end
end
def create
@user_session = UserSession.new(params[:user_session])
if @user_session.save
flash[:notice] = "Login successful!"
redirect_back_or_default(home_path)
else
render :action => :new
end
end
これはほとんどの場合問題なく機能しますが、ユーザーがサイトに登録した直後にログインすると、空白のページにリダイレクトされます。これは、新しいユーザー セッションに移動する前の最後のアクションだったので、「作成」アクションだと思います。
だから私はこれを試しました:
def new
@user_session = UserSession.new
unless request.referer == join_path
session[:return_to] = request.referer
end
end
そして、これはログイン後にログインページに戻ろうとします.
私が本当にやりたいことは、ユーザーが初めてログインしたときに自分のプロファイルを表示することです。
これではユーザー ID が得られず、ルーティング エラーが発生しました
def create
@user_session = UserSession.new(params[:user_session])
if @user_session.save
flash[:notice] = "Login successful!"
redirect_back_or_default(user_path(current_user))
else
render :action => :new
end
end
これらのリダイレクトアクロバットを以前に経験した人はいますか? 私はそれを機能させることができないようです。それが役立つ場合、私はauthlogicを使用しています。