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
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.