123456789_123456789_123456789_123456789_123456789_

Module: ActionView::Rendering

Relationships & Source Files
Namespace Children
Modules:
Extension / Inclusion / Inheritance Descendants
Included In:
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Instance Chain:
self, ViewPaths
Defined in: actionview/lib/action_view/rendering.rb

Class Method Summary

::ActiveSupport::Concern - Extended

class_methods

Define class methods from given block.

included

Evaluate given block in context of base class, so that you can write class macros here.

prepended

Evaluate given block in context of base class, so that you can write class macros here.

append_features, prepend_features

Instance Attribute Summary

Instance Method Summary

ViewPaths - Included

#any_templates?,
#append_view_path

Append a path to the list of view paths for the current LookupContext.

#details_for_lookup,
#lookup_context

LookupContext is the object responsible for holding all information required for looking up templates, i.e. view paths and details.

#prepend_view_path

Prepend a path to the list of view paths for the current LookupContext.

#template_exists?,
#_prefixes

The prefixes used in render “foo” shortcuts.

Instance Attribute Details

#rendered_format (readonly)

[ GitHub ]

  
# File 'actionview/lib/action_view/rendering.rb', line 30

attr_internal_reader :rendered_format

Instance Method Details

#_normalize_args(action = nil, options = {}) (private)

Normalize args by converting render “foo” to render action: “foo” and render “foo/bar” to render template: “foo/bar”.

[ GitHub ]

  
# File 'actionview/lib/action_view/rendering.rb', line 153

def _normalize_args(action = nil, options = {})
  options = super(action, options)
  case action
  when NilClass
  when Hash
    options = action
  when String, Symbol
    action = action.to_s
    key = action.include?(?/) ? :template : :action
    options[key] = action
  else
    if action.respond_to?(:permitted?) && action.permitted?
      options = action
    elsif action.respond_to?(:render_in)
      options[:renderable] = action
    else
      options[:partial] = action
    end
  end

  options
end

#_process_format(format) (private)

Assign the rendered format to look up context.

[ GitHub ]

  
# File 'actionview/lib/action_view/rendering.rb', line 146

def _process_format(format)
  super
  lookup_context.formats = [format.to_sym] if format.to_sym
end

#_process_render_template_options(options) (private)

Normalize options.

[ GitHub ]

  
# File 'actionview/lib/action_view/rendering.rb', line 177

def _process_render_template_options(options)
  if options[:partial] == true
    options[:partial] = action_name
  end

  if !options.keys.intersect?([:partial, :file, :template])
    options[:prefixes] ||= _prefixes
  end

  options[:template] ||= (options[:action] || action_name).to_s
end

#_render_template(options) (private)

Find and render a template based on the options given.

[ GitHub ]

  
# File 'actionview/lib/action_view/rendering.rb', line 127

def _render_template(options)
  variant = options.delete(:variant)
  assigns = options.delete(:assigns)
  context = view_context

  context.assign assigns if assigns
  lookup_context.variants = variant if variant

  rendered_template = context.in_rendering_context(options) do |renderer|
    renderer.render_to_object(context, options)
  end

  rendered_format = rendered_template.format || lookup_context.formats.first
  @_rendered_format = Template::Types[rendered_format]

  rendered_template.body
end

#initialize

[ GitHub ]

  
# File 'actionview/lib/action_view/rendering.rb', line 32

def initialize
  @_rendered_format = nil
  super
end

#process

This method is for internal use only.

Override process to set up ::I18n proxy.

[ GitHub ]

  
# File 'actionview/lib/action_view/rendering.rb', line 38

def process(...) # :nodoc:
  old_config, I18n.config = I18n.config, I18nProxy.new(I18n.config, lookup_context)
  super
ensure
  I18n.config = old_config
end

#render_to_body(options = {})

[ GitHub ]

  
# File 'actionview/lib/action_view/rendering.rb', line 119

def render_to_body(options = {})
  _process_options(options)
  _process_render_template_options(options)
  _render_template(options)
end

#view_context

An instance of a view class. The default view class is Base.

The view class must have the following methods:

  • View.new(lookup_context, assigns, controller) — Create a new ActionView instance for a controller and we can also pass the arguments.

  • View#render(option) — Returns String with the rendered template.

Override this method in a module to change the default behavior.

[ GitHub ]

  
# File 'actionview/lib/action_view/rendering.rb', line 109

def view_context
  view_context_class.new(lookup_context, view_assigns, self)
end

#view_context_class

[ GitHub ]

  
# File 'actionview/lib/action_view/rendering.rb', line 95

def view_context_class
  self.class.view_context_class
end

#view_renderer

This method is for internal use only.

Returns an object that is able to render templates.

[ GitHub ]

  
# File 'actionview/lib/action_view/rendering.rb', line 114

def view_renderer # :nodoc:
  # Lifespan: Per controller
  @_view_renderer ||= ActionView::Renderer.new(lookup_context)
end