123456789_123456789_123456789_123456789_123456789_

Module: AbstractController::Rendering

Constant Summary

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

::ActionView::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 Method Details

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

Normalize args by converting render "foo" to render action: "foo" and render "foo/bar" to render file: "foo/bar".

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/rendering.rb', line 74

def _normalize_args(action = nil, options = {}) # :doc:
  if action.respond_to?(:permitted?)
    if action.permitted?
      action
    else
      raise ArgumentError, "render parameters are not permitted"
    end
  elsif action.is_a?(Hash)
    action
  else
    options
  end
end

#_normalize_options(options) (private)

Normalize options.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/rendering.rb', line 89

def _normalize_options(options) # :doc:
  options
end

#_normalize_render(*args, &block) (private)

This method is for internal use only.

Normalize args and options.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/rendering.rb', line 115

def _normalize_render(*args, &block) # :nodoc:
  options = _normalize_args(*args, &block)
  _process_variant(options)
  _normalize_options(options)
  options
end

#_process_format(format) (private)

This method is for internal use only.

Process the rendered format.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/rendering.rb', line 99

def _process_format(format) # :nodoc:
end

#_process_options(options) (private)

Process extra options.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/rendering.rb', line 94

def _process_options(options) # :doc:
  options
end

#_process_variant(options) (private)

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/rendering.rb', line 102

def _process_variant(options)
end

#_protected_ivars (private)

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/rendering.rb', line 122

def _protected_ivars
  DEFAULT_PROTECTED_INSTANCE_VARIABLES
end

#_set_html_content_type (private)

This method is for internal use only.
[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/rendering.rb', line 105

def _set_html_content_type # :nodoc:
end

#_set_rendered_content_type(format) (private)

This method is for internal use only.
[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/rendering.rb', line 111

def _set_rendered_content_type(format) # :nodoc:
end

#_set_vary_header (private)

This method is for internal use only.
[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/rendering.rb', line 108

def _set_vary_header # :nodoc:
end

#render(*args, &block)

Normalizes arguments and options, and then delegates to render_to_body and sticks the result in self.response_body.

Supported options depend on the underlying #render_to_body implementation.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/rendering.rb', line 27

def render(*args, &block)
  options = _normalize_render(*args, &block)
  rendered_body = render_to_body(options)
  if options[:html]
    _set_html_content_type
  else
    _set_rendered_content_type rendered_format
  end
  _set_vary_header
  self.response_body = rendered_body
end

#render_to_body(options = {})

Performs the actual template rendering.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/rendering.rb', line 51

def render_to_body(options = {})
end

#render_to_string(*args, &block)

Similar to #render, but only returns the rendered template as a string, instead of setting self.response_body.

If a component extends the semantics of response_body (as ::ActionController extends it to be anything that responds to the method each), this method needs to be overridden in order to still return a string.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/rendering.rb', line 45

def render_to_string(*args, &block)
  options = _normalize_render(*args, &block)
  render_to_body(options)
end

#rendered_format

Returns Content-Type of rendered content.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/rendering.rb', line 55

def rendered_format
  Mime[:text]
end

#view_assigns

This method should return a hash with assigns. You can overwrite this configuration per controller.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/rendering.rb', line 63

def view_assigns
  variables = instance_variables - _protected_ivars

  variables.each_with_object({}) do |name, hash|
    hash[name.slice(1, name.length)] = instance_variable_get(name)
  end
end