module ActionView::Rendering
def _normalize_args(action=nil, options={})
render "foo/bar" to render :template => "foo/bar".
Normalize args by converting render "foo" to render :action => "foo" and
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 options[:partial] = action end options end
def _normalize_options(options)
Normalize options.
def _normalize_options(options) options = super(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
def _process_format(format) #:nodoc:
Assign the rendered format to look up context.
def _process_format(format) #:nodoc: super lookup_context.formats = [format.to_sym] lookup_context.rendered_format = lookup_context.formats.first end
def _render_template(options) #:nodoc:
:api: private
Find and render a template based on the options given.
def _render_template(options) #:nodoc: variant = options.delete(:variant) assigns = options.delete(:assigns) context = view_context context.assign assigns if assigns lookup_context.rendered_format = nil if options[:formats] lookup_context.variants = variant if variant view_renderer.render(context, options) 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_to_body(options = {})
def render_to_body(options = {}) _process_options(options) _render_template(options) end
def rendered_format
def rendered_format Template::Types[lookup_context.rendered_format] end
def view_context
Returns String with the rendered template
View#render(option)
Create a new ActionView instance for a controller and we can also pass the arguments.
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(view_renderer, view_assigns, self) end
def view_context_class
def view_context_class @_view_context_class ||= self.class.view_context_class end
def view_renderer
Returns an object that is able to render templates.
def view_renderer @_view_renderer ||= ActionView::Renderer.new(lookup_context) end