Rails 3.2 と Authlogic を使用しています。次のコードがあります。
class ApplicationController < ActionController::Base
private
def store_location
session[:return_to] = request.url
end
def redirect_back_or_default(default)
redirect_to(session[:return_to] || default)
session[:return_to] = nil
end
end
class UserSessionsController < ApplicationController
before_filter :require_no_user, :only => [:new, :create]
before_filter :require_user, :only => :destroy
def new
@user_session = UserSession.new
@header_title = "Login"
end
def create
@user_session = UserSession.new(params[:user_session])
if @user_session.save
flash[:success] = "Login successful!"
redirect_back_or_default root_url
else
render 'new'
end
end
def destroy
current_user_session.destroy
flash[:success] = "Logout successful!"
redirect_back_or_default root_url
end
end
このコードは非常に一般的です。を使用する場合before_filter
:
before_filter :require_user, :only => [:new, :edit, :update, :create]
自動的store_location
に適切なページにリダイレクトされます。ただし、これを行うにはどうすればよいですか。
- I'm in
posts/1
which doesn'trequire_user
. - 上部のナビゲーション バーにあるログイン リンクをクリックします。
- ログインページを表示します。
posts/1
ログインすると、 の代わりに にリダイレクトされますroot_url
。