Correctly doing redirect_to :back in Ruby on Rails when referrer is not available

It is unlikely that you do have a session and don’t have a referrer.

The situation that a referrer is not set isn’t that uncommon and I usually rescue that expection:

def some_method
  redirect_to :back
rescue ActionController::RedirectBackError
  redirect_to root_path
end

If you do this often (which I think is a bad idea) you can wrap it in an other method like Maran suggests.

BTW I think that’s a bad idea because this makes the userflow ambiguous. Only in the case of a login this is sensible.

UPDATE: As several people pointed out this no longer works with Rails 5.
Instead, use redirect_back, this method also supports a fallback. The code then becomes:

def some_method
  redirect_back fallback_location: root_path
end

Leave a Comment