instance method redirect_to

Ruby on Rails 2.3.18

Since v2.2.3 Last seen in v2.3.18

Available in: v2.2.3 v2.3.18

Signature

redirect_to(options = {}, response_status = {})

Redirects the browser to the target specified in options. This parameter can take one of three forms:

  • Hash - The URL will be generated by calling url_for with the options.

  • Record - The URL will be generated by calling url_for with the options, which will reference a named URL for that record.

  • String starting with protocol:// (like http://) - Is passed straight through as the target for redirection.

  • String not containing a protocol - The current protocol and host is prepended to the string.

  • :back - Back to the page that issued the request. Useful for forms that are triggered from multiple places. Short-hand for redirect_to(request.env["HTTP_REFERER"])

Examples:

redirect_to :action => "show", :id => 5
redirect_to post
redirect_to "http://www.rubyonrails.org"
redirect_to "/images/screenshot.jpg"
redirect_to articles_url
redirect_to :back

The redirection happens as a “302 Moved” header unless otherwise specified.

Examples:

redirect_to post_url(@post), :status => :found
redirect_to :action=>'atom', :status => :moved_permanently
redirect_to post_url(@post), :status => 301
redirect_to :action=>'atom', :status => 302

The status code can either be a standard HTTP Status code as an integer, or a symbol representing the downcased, underscored and symbolized description.

It is also possible to assign a flash message as part of the redirection. There are two special accessors for commonly used the flash names alert and notice as well as a general purpose flash bucket.

Examples:

redirect_to post_url(@post), :alert => "Watch it, mister!"
redirect_to post_url(@post), :status=> :found, :notice => "Pay attention to the road"
redirect_to post_url(@post), :status => 301, :flash => { :updated_post_id => @post.id }
redirect_to { :action=>'atom' }, :alert => "Something serious happened"

When using redirect_to :back, if there is no referrer, RedirectBackError will be raised. You may specify some fallback behavior for this case by rescuing RedirectBackError.

Parameters

options opt = {}
response_status opt = {}
Source
# File actionpack/lib/action_controller/base.rb, line 1105
      def redirect_to(options = {}, response_status = {}) #:doc:
        raise ActionControllerError.new("Cannot redirect to nil!") if options.nil?

        if options.is_a?(Hash) && options[:status]
          status = options.delete(:status)
        elsif response_status[:status]
          status = response_status[:status]
        else
          status = 302
        end

        response.redirected_to = options

        case options
          # The scheme name consist of a letter followed by any combination of
          # letters, digits, and the plus ("+"), period ("."), or hyphen ("-")
          # characters; and is terminated by a colon (":").
          when %r{^\w[\w\d+.-]*:.*}
            redirect_to_full_url(options, status)
          when String
            redirect_to_full_url(request.protocol + request.host_with_port + options, status)
          when :back
            if referer = request.headers["Referer"]
              redirect_to(referer, :status=>status)
            else
              raise RedirectBackError
            end
          else
            redirect_to_full_url(url_for(options), status)
        end
      end

Defined in actionpack/lib/action_controller/base.rb line 1105 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActionController::Base

Type at least 2 characters to search.

↑↓ navigate · open · esc close