getting my head around referrers

i'm trying to get my login and logouts to redirect to from where they
came. but because the login/logout controller runs twice (once when u
call it, and then when u login/logout) the referrer changes to the
login page. how can i prevent this?

here's my code. tx:

def login
@from = params[:id]
     session[:referer] = request.referer
      @referer=session[:referer]
    if request.post?
      user = User.authenticate(params[:name], params[:password])
      if user
        session[:user_id] = user.id
        session[:user_name] = user.name
     redirect_to(session[:referer])
     #redirect_to(:controller => "posts", :action => "index")
      else
        flash[:notice] = "Invalid user/password combination"
      end
    end
  end

actually i solved this myself.
but it doesn't seem to elegant.

any suggestions would be appreciated. here's the code:

def login
  if request.get?
  @from = params[:id]
  session[:referer] = request.referer
  @referer=session[:referer]
end
    if request.post?
      user = User.authenticate(params[:name], params[:password])
      if user
        session[:user_id] = user.id
        session[:user_name] = user.name
     redirect_to(session[:referer])
      else
        flash[:notice] = "Invalid user/password combination"
      end
    end
  end