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 73

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 88

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 114

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 98

def _process_format(format) # :nodoc:
end

#_process_options(options) (private)

Process extra options.

[ GitHub ]

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

def _process_options(options) # :doc:
  options
end

#_process_variant(options) (private)

[ GitHub ]

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

def _process_variant(options)
end

#_protected_ivars (private)

[ GitHub ]

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

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 104

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 110

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 107

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 26

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 50

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 44

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 54

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 62

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