Class: ActionView::CollectionRenderer
- Inherits:
-
PartialRenderer
- Object
- AbstractRenderer
- PartialRenderer
- ActionView::CollectionRenderer
- Includes:
- ObjectRendering
- Defined in:
- lib/action_view/renderer/collection_renderer.rb
Overview
:nodoc:
Defined Under Namespace
Classes: CollectionIterator, MixedCollectionIterator, PreloadCollectionIterator, SameCollectionIterator
Instance Method Summary collapse
- #render_collection_derive_partial(collection, context, block) ⇒ Object
- #render_collection_with_partial(collection, partial, context, block) ⇒ Object
Methods inherited from PartialRenderer
Methods inherited from AbstractRenderer
Constructor Details
This class inherits a constructor from ActionView::PartialRenderer
Instance Method Details
#render_collection_derive_partial(collection, context, block) ⇒ Object
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/action_view/renderer/collection_renderer.rb', line 130 def render_collection_derive_partial(collection, context, block) paths = collection.map { |o| partial_path(o, context) } if paths.uniq.length == 1 # Homogeneous render_collection_with_partial(collection, paths.first, context, block) else if @options[:cached] raise NotImplementedError, "render caching requires a template. Please specify a partial when rendering" end paths.map! { |path| retrieve_variable(path).unshift(path) } collection = MixedCollectionIterator.new(collection, paths) render_collection(collection, context, nil, nil, nil, block) end end |
#render_collection_with_partial(collection, partial, context, block) ⇒ Object
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/action_view/renderer/collection_renderer.rb', line 112 def render_collection_with_partial(collection, partial, context, block) iter_vars = retrieve_variable(partial) collection = if collection.respond_to?(:preload_associations) PreloadCollectionIterator.new(collection, partial, iter_vars, collection) else SameCollectionIterator.new(collection, partial, iter_vars) end template = find_template(partial, @locals.keys + iter_vars) layout = if !block && (layout = @options[:layout]) find_template(layout.to_s, @locals.keys + iter_vars) end render_collection(collection, context, partial, template, layout, block) end |