module AbstractController::Rendering
def _normalize_args(action=nil, options={})
Normalize options by converting render "foo" to render :action => "foo" and
def _normalize_args(action=nil, options={}) case action when NilClass when Hash options, action = action, nil when String, Symbol action = action.to_s key = action.include?(?/) ? :file : :action options[key] = action else options.merge!(:partial => action) end options end
def _normalize_options(options)
def _normalize_options(options) if options[:partial] == true options[:partial] = action_name end if (options.keys & [:partial, :file, :template]).empty? options[:prefix] ||= _prefix end options[:template] ||= (options[:action] || action_name).to_s options end
def _prefix
def _prefix controller_path end
def _process_options(options)
def _process_options(options) end
def _render_template(options) #:nodoc:
:api: private
Find and renders a template based on the options given.
def _render_template(options) #:nodoc: view_context.render(options) end
def initialize(*)
def initialize(*) @view_context_class = nil super end
def process(*) #:nodoc:
Overwrite process to setup I18n proxy.
def process(*) #:nodoc: old_config, I18n.config = I18n.config, I18nProxy.new(I18n.config, lookup_context) super ensure I18n.config = old_config end
def render(*args, &block)
Normalize arguments, options and then delegates render_to_body and
def render(*args, &block) self.response_body = render_to_string(*args, &block) end
def render_to_body(options = {})
Raw rendering of a template to a Rack-compatible body.
def render_to_body(options = {}) _process_options(options) _render_template(options) end
def render_to_string(*args, &block)
render_to_body into a String.
Raw rendering of a template to a string. Just convert the results of
def render_to_string(*args, &block) options = _normalize_args(*args, &block) _normalize_options(options) render_to_body(options) end
def view_assigns
You can overwrite this configuration per controller.
This method should return a hash with assigns.
def view_assigns hash = {} variables = instance_variable_names variables -= protected_instance_variables if respond_to?(:protected_instance_variables) variables.each { |name| hash[name.to_s[1..-1]] = instance_variable_get(name) } hash end
def view_context
Returns String with the rendered template
View#render[options]
Create a new ActionView instance for a controller
View.new[lookup_context, assigns, controller]
The view class must have the following methods:
An instance of a view class. The default view class is ActionView::Base
def view_context view_context_class.new(lookup_context, view_assigns, self) end
def view_context_class
def view_context_class @view_context_class || self.class.view_context_class end