Module Merb::RenderMixin
In: lib/merb-core/controller/mixins/render.rb

Methods

Included Modules

Merb::ControllerExceptions

Classes and Modules

Module Merb::RenderMixin::ClassMethods

Public Class methods

Parameters

base<Module>:Module that is including RenderMixin (probably a controller)

Public Instance methods

Get the layout that should be used. The content-type will be appended to the layout unless the layout already contains a "." in it.

If no layout was passed in, this method will look for one with the same name as the controller, and finally one in "application.#{content_type}".

Parameters

layout<~to_s>:A layout, relative to the layout root. Defaults to nil.

Returns

String:The method name that corresponds to the found layout.

Raises

TemplateNotFound:If a layout was specified (either via layout in the class or by passing one in to this method), and not found. No error will be raised if no layout was specified, and the default layouts were not found.

Take the options hash and handle it as appropriate.

Parameters

opts<Hash>:The options hash that was passed into render.

Options

:status<~to_i>:The status of the response will be set to opts[:status].to_i

Returns

Hash:The options hash that was passed in.

Iterate over the template roots in reverse order, and return the template and template location of the first match.

Parameters

context<Object>:The controller action or template basename.
content_type<~to_s>:The content type. Defaults to nil.
controller<~to_s>:The name of the controller. Defaults to nil.

Options (opts)

:template<String>:The location of the template to use. Defaults to whatever matches this context, content_type and controller.

Returns

Array[Symbol, String]:A pair consisting of the template method and location.

Called in templates to get at content thrown in another template. The results of rendering a template are automatically thrown into :for_layout, so catch_content or catch_content(:for_layout) can be used inside layouts to get the content rendered by the action template.

Parameters

obj<Object>:The key in the thrown_content hash. Defaults to :for_layout.

all other options options that will be pass to serialization method

                         like #to_json or #to_xml

Notes

The transformed object will not be used in a layout unless a :layout is explicitly passed in the opts.

Render a partial template.

Parameters

template<~to_s>:The path to the template, relative to the current controller or the template root. If the template contains a "/", Merb will search for it relative to the template root; otherwise, Merb will search for it relative to the current controller.
opts<Hash>:A hash of options (see below)

Options (opts)

:with<Object, Array>:An object or an array of objects that will be passed into the partial.
:as<~to_sym>:The local name of the :with Object inside of the partial.
:format<Symbol>:The mime format that you want the partial to be in (:js, :html, etc.)
others:A Hash object names and values that will be the local names and values inside the partial.

Example

  partial :foo, :hello => @object

The "_foo" partial will be called, relative to the current controller, with a local variable of hello inside of it, assigned to @object.

Render the specified item, with the specified options.

Parameters

thing<String, Symbol, nil>:The thing to render. This will default to the current action
opts<Hash>:An options hash (see below)

Options (opts)

:format<Symbol>:A registered mime-type format
:template<String>:The path to the template relative to the template root
:status<~to_i>:The status to send to the client. Typically, this would be an integer (200), or a Merb status code (Accepted)
:layout<~to_s>:A layout to use instead of the default. This should be relative to the layout root. By default, the layout will be either the controller_name or application. If you want to use an alternative content-type than the one that the base template was rendered as, you will need to do :layout => "foo.#{content_type}" (i.e. "foo.json")

Returns

String:The rendered template, including layout, if appropriate.

Raises

TemplateNotFound:There is no template for the specified location.

Alternatives

If you pass a Hash as the first parameter, it will be moved to opts and "thing" will be the current action

Called in templates to store up content for later use. Takes a string and/or a block. First, the string is evaluated, and then the block is captured using the capture() helper provided by the template languages. The two are concatenated together.

Parameters

obj<Object>:The key in the thrown_content hash.
string<String>:Textual content. Defaults to nil.
&block:A block to be evaluated and concatenated to string.

Raises

ArgumentError:Neither string nor block given.

Example

  throw_content(:foo, "Foo")
  catch_content(:foo) #=> "Foo"

Called in templates to test for the existence of previously thrown content.

Parameters

obj<Object>:The key in the thrown_content hash. Defaults to :for_layout.

[Validate]