Normalize arguments, options and then delegates #render_to_body and sticks the result in self.response_body.
# File lib/abstract_controller/rendering.rb, line 95 def render(*args, &block) options = _normalize_render(*args, &block) self.response_body = render_to_body(options) end
Raw rendering of a template. :api: plugin
# File lib/abstract_controller/rendering.rb, line 118 def render_to_body(options = {}) _process_options(options) _render_template(options) end
Raw rendering of a template to a string.
It is similar to render, except that it does not set the response_body and it should be guaranteed to always return a string.
If a component extends the semantics of response_body (as Action Controller extends it to be anything that responds to the method each), this method needs to be overridden in order to still return a string. :api: plugin
# File lib/abstract_controller/rendering.rb, line 111 def render_to_string(*args, &block) options = _normalize_render(*args, &block) render_to_body(options) end
This method should return a hash with assigns. You can overwrite this configuration per controller. :api: public
# File lib/abstract_controller/rendering.rb, line 138 def view_assigns hash = {} variables = instance_variables variables -= protected_instance_variables variables -= DEFAULT_PROTECTED_INSTANCE_VARIABLES variables.each { |name| hash[name[1..-1]] = instance_variable_get(name) } hash end
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
Returns String with the rendered template
Override this method in a module to change the default behavior.
# File lib/abstract_controller/rendering.rb, line 84 def view_context view_context_class.new(view_renderer, view_assigns, self) end
# File lib/abstract_controller/rendering.rb, line 71 def view_context_class @_view_context_class ||= self.class.view_context_class end
Returns an object that is able to render templates.
# File lib/abstract_controller/rendering.rb, line 89 def view_renderer @_view_renderer ||= ActionView::Renderer.new(lookup_context) end
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 160 def _normalize_args(action=nil, options={}) case action when NilClass when Hash options = action when String, Symbol action = action.to_s key = action.include?(/) ? :file : :action options[key] = action else options[:partial] = action end options end
Normalize options. :api: plugin
# File lib/abstract_controller/rendering.rb, line 178 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 args and options. :api: private
# File lib/abstract_controller/rendering.rb, line 151 def _normalize_render(*args, &block) options = _normalize_args(*args, &block) _normalize_options(options) options end
Process extra options. :api: plugin
# File lib/abstract_controller/rendering.rb, line 193 def _process_options(options) end