module AbstractController::Rendering

Constants

DEFAULT_PROTECTED_INSTANCE_VARIABLES

Public Instance Methods

render(*args, &block) click to toggle source

Normalize arguments, options and then delegates #render_to_body and sticks the result in self.response_body.

# File lib/abstract_controller/rendering.rb, line 86
def render(*args, &block)
  options = _normalize_render(*args, &block)
  self.response_body = render_to_body(options)
end
render_to_body(options = {}) click to toggle source

Raw rendering of a template to a Rack-compatible body. :api: plugin

# File lib/abstract_controller/rendering.rb, line 101
def render_to_body(options = {})
  _process_options(options)
  _render_template(options)
end
render_to_string(*args, &block) click to toggle source

Raw rendering of a template to a string. Just convert the results of render_response into a String. :api: plugin

# File lib/abstract_controller/rendering.rb, line 94
def render_to_string(*args, &block)
  options = _normalize_render(*args, &block)
  render_to_body(options)
end
view_assigns() click to toggle source

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

# File lib/abstract_controller/rendering.rb, line 121
def view_assigns
  hash = {}
  variables  = instance_variable_names
  variables -= protected_instance_variables
  variables -= DEFAULT_PROTECTED_INSTANCE_VARIABLES
  variables.each { |name| hash[name.to_s[1, name.length]] = instance_variable_get(name) }
  hash
end
view_context() click to toggle source

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

The view class must have the following methods: View.new[lookup_context, assigns, controller]

Create a new ActionView instance for a controller

View#render

Returns String with the rendered template

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

# File lib/abstract_controller/rendering.rb, line 75
def view_context
  view_context_class.new(view_renderer, view_assigns, self)
end
view_context_class() click to toggle source
# File lib/abstract_controller/rendering.rb, line 62
def view_context_class
  @_view_context_class ||= self.class.view_context_class
end
view_renderer() click to toggle source

Returns an object that is able to render templates.

# File lib/abstract_controller/rendering.rb, line 80
def view_renderer
  @_view_renderer ||= ActionView::Renderer.new(lookup_context)
end

Private Instance Methods

_normalize_args(action=nil, options={}) click to toggle source

Normalize args by converting render “foo” to render :action => “foo” and render “foo/bar” to render :file => “foo/bar”. :api: plugin

# File lib/abstract_controller/rendering.rb, line 143
def _normalize_args(action=nil, options={})
  case action
  when NilClass
  when Hash
    options = action
  when String, Symbol
    action = action.to_s
    key = action.include?(?/) ? :app_template_file : :action
    options[key] = action
  else
    options[:partial] = action
  end
  options
end
_normalize_options(options) click to toggle source

Normalize options. :api: plugin

# File lib/abstract_controller/rendering.rb, line 160
def _normalize_options(options)
  if options[:partial] == true
    options[:partial] = action_name
  end

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

  options[:template] ||= (options[:action] || action_name).to_s
  options
end
_normalize_render(*args, &block) click to toggle source

Normalize args and options. :api: private

# File lib/abstract_controller/rendering.rb, line 134
def _normalize_render(*args, &block)
  options = _normalize_args(*args, &block)
  _normalize_options(options)
  options
end
_process_options(options) click to toggle source

Process extra options. :api: plugin

# File lib/abstract_controller/rendering.rb, line 175
def _process_options(options)
end