Module: ActionView::Rendering
- Included in:
- Base
- Defined in:
- lib/action_view/render/rendering.rb
Overview
Action View Rendering
Instance Method Summary collapse
-
#_determine_template(options) ⇒ Object
Determine the template to be rendered using the given options.
-
#_render_template(template, layout = nil, options = {}) ⇒ Object
Renders the given template.
-
#render(options = {}, locals = {}, &block) ⇒ Object
Returns the result of a render that’s dictated by the options hash.
Instance Method Details
#_determine_template(options) ⇒ Object
Determine the template to be rendered using the given options.
36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/action_view/render/rendering.rb', line 36 def _determine_template() #:nodoc: if .key?(:inline) handler = Template.handler_class_for_extension([:type] || "erb") Template.new([:inline], "inline template", handler, {}) elsif .key?(:text) Template::Text.new([:text], formats.try(:first)) elsif .key?(:file) with_fallbacks { find_template([:file], [:prefix]) } elsif .key?(:template) [:template].respond_to?(:render) ? [:template] : find_template([:template], [:prefix]) end end |
#_render_template(template, layout = nil, options = {}) ⇒ Object
Renders the given template. An string representing the layout can be supplied as well.
52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/action_view/render/rendering.rb', line 52 def _render_template(template, layout = nil, = {}) #:nodoc: locals = [:locals] || {} layout = find_layout(layout) if layout ActiveSupport::Notifications.instrument("render_template.action_view", :identifier => template.identifier, :layout => layout.try(:virtual_path)) do content = template.render(self, locals) { |*name| _layout_for(*name) } @_content_for[:layout] = content if layout content = _render_layout(layout, locals) if layout content end end |
#render(options = {}, locals = {}, &block) ⇒ Object
Returns the result of a render that’s dictated by the options hash. The primary options are:
-
:partial
- See ActionView::Partials. -
:update
- Calls update_page with the block given. -
:file
- Renders an explicit template file (this used to be the old default), add :locals to pass in those. -
:inline
- Renders an inline template similar to how it’s done in the controller. -
:text
- Renders the text passed in out.
If no options hash is passed or :update specified, the default is to render a partial and use the second parameter as the locals hash.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/action_view/render/rendering.rb', line 16 def render( = {}, locals = {}, &block) case when Hash if block_given? _render_partial(.merge(:partial => .delete(:layout)), &block) elsif .key?(:partial) _render_partial() else template = _determine_template() lookup_context.freeze_formats(template.formats, true) _render_template(template, [:layout], ) end when :update update_page(&block) else _render_partial(:partial => , :locals => locals) end end |