Render a view from a model in Rails

Updated . Posted . Visible to the public.

In Rails 5 Show archive.org snapshot you can say:

ApplicationController.render(
  :template => 'users/index',
  :layout => 'my_layout',
  :assigns => { users: @users }
)

If a Request Environment is needed you can set attributes default attributes or initialize a new renderer in an explicit way (e.g. if you want to use users_url in the template):

ApplicationController.renderer.defaults # =>
{
  http_host: 'example.org',
  https:      false,
  ...
}
renderer = ApplicationController.renderer.new(
  http_host: 'example.org',
  https:      false
)

renderer.render(
  :template => 'users/index',
  :layout => 'my_layout',
  :assigns => { users: @users }
)

In Rails 3 and 4 you can say:

ApplicationController.new.render_to_string(
  :template => 'users/index',
  :layout => 'my_layout',
  :locals => { :@users => @users }
)

Mind the weird syntax to set @ variables in :locals.

Hat tip to BitCrowd Show archive.org snapshot . You can also backport the rails 5 new renderer Show archive.org snapshot

Use case

Henning Koch
Last edit
Emanuel
License
Source code in this card is licensed under the MIT License.
Posted by Henning Koch to makandra dev (2013-08-19 08:11)