How to Render View in Rails: Syntax and Examples
In Rails, you render a view using the
render method inside a controller action. You can render templates, partials, or plain text by specifying options like render :template or render :partial.Syntax
The render method in Rails is used inside controller actions to display views. You can render a full template, a partial, or plain text. Common forms include:
render :template => 'controller/view'- renders a specific template.render :partial => 'partial_name'- renders a reusable partial view.render :plain => 'some text'- renders plain text (less common).render :json => object- renders JSON data.
ruby
def show
render template: 'products/show'
endExample
This example shows a controller action rendering a view template automatically and explicitly using render. The view file app/views/products/show.html.erb displays product details.
ruby
class ProductsController < ApplicationController def show @product = Product.find(params[:id]) # Implicit render: Rails looks for 'products/show.html.erb' end def details @product = Product.find(params[:id]) render template: 'products/show' # Explicit render end end # app/views/products/show.html.erb # <h1><%= @product.name %></h1> # <p>Price: $<%= @product.price %></p>
Output
<h1>Example Product</h1>
<p>Price: $19.99</p>
Common Pitfalls
Common mistakes when rendering views in Rails include:
- Not having the corresponding view file in the right folder, causing
MissingTemplateerrors. - Using
renderwith incorrect path or symbol syntax. - Forgetting that Rails automatically renders the view matching the action name if
renderis not called. - Trying to render after sending a redirect, which causes errors.
ruby
def show # Wrong: render with wrong template path render template: 'wrong_folder/show' end # Correct: def show render template: 'products/show' end
Quick Reference
| Render Usage | Description |
|---|---|
| render :template => 'controller/view' | Render a specific view template |
| render :partial => 'partial_name' | Render a reusable partial view |
| render :json => object | Render JSON data for APIs |
| render :plain => 'string' | Render plain text response |
| render 'view_name' | Shortcut to render a view in the current controller |
Key Takeaways
Use
render in controller actions to display views explicitly or rely on Rails' automatic rendering.Ensure the view files exist in the correct folder matching controller and action names.
Use
render :partial to reuse view snippets across pages.Avoid calling
render after redirect_to to prevent errors.You can render JSON or plain text responses with
render for API or simple outputs.