In this article, we take an up-close-and-personal look at the Rails framework by getting into the nitty-gritty of this particular functionality.
Join the DZone community and get the full member experience.Join For Free
Learn how error monitoring with Sentry closes the gap between the product team and your customers. With Sentry, you can focus on what you do best: building and scaling software that makes your users’ lives better.
redirect_to takes two parameters, option and response_status (optional). It redirects the browser to the target specified in options.
This parameter can be:
- Hash - The URL will be generated by calling url_for with the options.
redirect_to action: 'show', id: 2
- Record - The URL will be generated by calling url_for with the options.
- A string starting with the protocol - // (like http: //) - is passed straight through as the target for redirection.
- A string not containing a protocol, the current protocol, and the host are prepended to the string.
- A helper method generated by Rails (most commonly used).
:back- Back to the page that issued the request. Useful for forms that are triggered from multiple places.
The redirection happens as a "302 Moved" header unless otherwise specified.
redirect_to profile_url(@profile), :status => :moved_permanently redirect_to profile_url(@profile), :status => 302
Note: You should always use named code because it is more readable. Be sure to check other status codes.
If needed, you can also specify a controller and an action.
redirect_to :controller => 'article', :action => 'index'
You can specify the format, too (in case you need to redirect a request coming in one format to another format).
redirect_to :action => 'show', :format => 'html'
Redirect to your main page, just make sure to configure to root route first.
redirect_to does not stop the execution of the function. To terminate the execution of the function immediately after
redirect_to article_url(@article) and return
Display a Flash Message On Redirect
The most elegant way to achieve this is to use a helper method in
ApplicationController and declare which types of flash messages you want to use. For example:
class ApplicationController < ActionController::Base ... add_flash_types :success, :error ... end
Then, use it in your controller actions like this:
redirect_to articles_path, success: 'Article is successfully created'
Passing Parameters in redirect_to
If you need to pass additional parameters, just add it to helper method:
redirect_to article_path(@article, param: 'foo')
The above code will create this path:
Or, if you want to specify the exact controller and action, do the following:
redirect_to controller: 'articles', action: 'show', id: 1, param: 'foo'
The above will generate the same path.
Now, you can access it in the responding action and do what you intended with it:
def show @param = params[:param] ... end
Redirect to Subdomain
If you're looking to redirect to a subdomain try this:
redirect_to article_url(@article, subdomain: 'sub')
Difference Between _url and _path
The main difference between
_urlwill give you the absolute URL path, containing the protocol, host, and port. For example,
_pathwill return the relative path, which is given without the domain, protocol, etc. So it would just be
Use redirect_back Instead of redirect_to: back
Rails 5 provides a
redirect_back function to redirect the user to HTTP_REFERER. When HTTP_REFERER is not present, it redirects to the user whatever is passed in as
You can pass in a notice, too:
redirect_back(fallback_location: root_path, notice: "Your message")
The Difference Between redirect_to and Render
Redirect is telling the browser it needs to make a new request to a different location. Render does not change the URL of the page you are visiting.
Thank you for reading this article, we hope we were able to help!
https://tosbourn.com/difference-between-redirect-render- rails /
Opinions expressed by DZone contributors are their own.