render
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0 (0)
- 3.0.9 (0)
- 3.1.0 (0)
- 3.2.1 (0)
- 3.2.8 (0)
- 3.2.13 (0)
- 4.0.2 (0)
- 4.1.8 (0)
- 4.2.1 (0)
- 4.2.7 (0)
- 4.2.9 (0)
- 5.0.0.1 (0)
- 5.1.7 (0)
- 5.2.3 (0)
- 6.0.0 (0)
- 6.1.3.1 (0)
- 6.1.7.7 (0)
- 7.0.0 (0)
- 7.1.3.2 (38)
- 7.1.3.4 (0)
- What's this?
render(*args)
public
Renders a template and assigns the result to self.response_body.
If no rendering mode option is specified, the template will be derived from the first argument.
render "posts/show" # => renders app/views/posts/show.html.erb # In a PostsController action... render :show # => renders app/views/posts/show.html.erb
If the first argument responds to render_in, the template will be rendered by calling render_in with the current view context.
Rendering Mode
- :partial
-
See ActionView::PartialRenderer for details.
render partial: "posts/form", locals: { post: Post.new } # => renders app/views/posts/_form.html.erb
- :file
-
Renders the contents of a file. This option should not be used with unsanitized user input.
render file: "/path/to/some/file" # => renders /path/to/some/file
- :inline
-
Renders an ERB template string.
@name = "World" render inline: "<h1>Hello, <%= @name %>!</h1>" # => renders "<h1>Hello, World!</h1>"
- :body
-
Renders the provided text, and sets the content type as text/plain.
render body: "Hello, World!" # => renders "Hello, World!"
- :plain
-
Renders the provided text, and sets the content type as text/plain.
render plain: "Hello, World!" # => renders "Hello, World!"
- :html
-
Renders the provided HTML string, and sets the content type as text/html. If the string is not html_safe?, performs HTML escaping on the string before rendering.
render html: "<h1>Hello, World!</h1>".html_safe # => renders "<h1>Hello, World!</h1>" render html: "<h1>Hello, World!</h1>" # => renders "<h1>Hello, World!</h1>"
- :json
-
Renders the provided object as JSON, and sets the content type as application/json. If the object is not a string, it will be converted to JSON by calling to_json.
render json: { hello: "world" } # => renders "{\"hello\":\"world\"}"
By default, when a rendering mode is specified, no layout template is rendered.
Options
- :assigns
-
Hash of instance variable assignments for the template.
render inline: "<h1>Hello, <%= @name %>!</h1>", assigns: { name: "World" } # => renders "<h1>Hello, World!</h1>"
- :locals
-
Hash of local variable assignments for the template.
render inline: "<h1>Hello, <%= name %>!</h1>", locals: { name: "World" } # => renders "<h1>Hello, World!</h1>"
- :layout
-
The layout template to render. Can also be false or true to disable or (re)enable the default layout template.
render "posts/show", layout: "holiday" # => renders app/views/posts/show.html.erb with the app/views/layouts/holiday.html.erb layout render "posts/show", layout: false # => renders app/views/posts/show.html.erb with no layout render inline: "<h1>Hello, World!</h1>", layout: true # => renders "<h1>Hello, World!</h1>" with the default layout
- :status
-
The HTTP status code to send with the response. Can be specified as a number or as the status name in Symbol form. Defaults to 200.
render "posts/new", status: 422 # => renders app/views/posts/new.html.erb with HTTP status code 422 render "posts/new", status: :unprocessable_entity # => renders app/views/posts/new.html.erb with HTTP status code 422