Module: RablRails::Renderer

Included in:
RablRails
Defined in:
lib/rabl-rails/renderer.rb

Defined Under Namespace

Classes: LookupContext, PartialError, TemplateNotFound, ViewContext

Instance Method Summary collapse

Instance Method Details

#render(object, template, options = {}) ⇒ Object

Renders object with the given rabl template.

Object can also be passed as an option : { locals: { object: obj_to_render } }

Default render format is JSON, but can be changed via an option: { format: ‘xml’ }

If template includes uses of instance variables (usually defined in the controller), you can passed them as locals options. For example, if you have this template:

object :@user
node(:read) { |u| u.has_read?(@post) }

Your method call should look like this:

RablRails.render(user, 'users/show', locals: { post: Post.new })


88
89
90
91
92
93
94
95
# File 'lib/rabl-rails/renderer.rb', line 88

def render(object, template, options = {})
  object = options[:locals].delete(:object) if !object && options[:locals]

  c = ViewContext.new(template, options)
  t = c.lookup_context.find_template(template, [], false)

  Library.instance.get_rendered_template(t.source, c, resource: object)
end