Help redirecting to the same page

Hi John,

I have a login controller and a link so I can login my app.
I would like to have something to come back to the page where I clicked
that link. So, when I click the link I go to the login page and after I
would like to return to the page where I clicked the link.
I have uses request_uri in other apps, but I need something different
now and be able to use it all around the web.

Depending on the complexity of your authentication processing, you may
be able to do something as simple as:

redirect_to :back

I'm not sure what you mean by 'need something different now' wrt
request_uri. An alternative to the above would be to capture the source
of the request in your login controller method and store it in the
session for future use.

There are other alternatives, of course. Maybe if you say more about
what you mean by 'be able to use it all around the web' you'll get some
more helpful responses.

Best regards,

Note that if you do use :back, you need to rescue RedirectBackError in case there is no HTTP_REFERER to go back to. It might be simpler to look at what redirect_to does with :back and do that yourself (exercise for the reader :wink:

   redirect_to :back
rescue RedirectBackError
   redirect_to home_url # or something appropriate for your app.


Rob Biedenharn

Thanks, but I can not do redirect_to :back, because it redirects to the
login page. I'll need something different. One possibility is to use a
session variables for my controller and method, but the problem is that
sometimes I need also and id, like 'posts/11'. I would like something
more general. I would like to be able to save all the url in a session
variable and then be able to redirect back to it. Is it possible?

You'll probably want to adopt an approach similar to restful-
authetication's method:

def store_location
  session[:return_to] = request.request_uri

(call this from your action that shows users the login page - see
for details)

--Matt Jones