diff options
author | Carlos Antonio da Silva <carlosantoniodasilva@gmail.com> | 2012-04-26 20:24:53 -0300 |
---|---|---|
committer | Carlos Antonio da Silva <carlosantoniodasilva@gmail.com> | 2012-04-29 14:45:05 -0300 |
commit | e72374d0ff8b149bdbf8e14a703cbc2028df520c (patch) | |
tree | dbf0b6446d2a7b8ae421169908fff8ddcd524d3f /actionpack/lib/action_view | |
parent | 82029c7511939074c7f50a415016fb2910c5d95e (diff) | |
download | rails-e72374d0ff8b149bdbf8e14a703cbc2028df520c.tar.gz rails-e72374d0ff8b149bdbf8e14a703cbc2028df520c.tar.bz2 rails-e72374d0ff8b149bdbf8e14a703cbc2028df520c.zip |
Allow layout rendering to access current object being rendered when using partial + collection
Diffstat (limited to 'actionpack/lib/action_view')
-rw-r--r-- | actionpack/lib/action_view/renderer/partial_renderer.rb | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/actionpack/lib/action_view/renderer/partial_renderer.rb b/actionpack/lib/action_view/renderer/partial_renderer.rb index 34ea06c9cf..449cf08fd0 100644 --- a/actionpack/lib/action_view/renderer/partial_renderer.rb +++ b/actionpack/lib/action_view/renderer/partial_renderer.rb @@ -283,13 +283,19 @@ module ActionView end if layout = @options[:layout] - layout = find_template(layout) + layout = find_template(layout, @locals.keys + [@variable]) end result = @template ? collection_with_template : collection_without_template - - result.map!{|content| layout.render(@view, @locals) { content } } if layout - + + if layout + locals = @locals + result.map! do |content| + locals[@variable] = @collection[result.index(content)] + layout.render(@view, @locals) { content } + end + end + result.join(spacer).html_safe end @@ -391,10 +397,9 @@ module ActionView locals[as] = object segments << template.render(@view, locals) end - + segments end - def collection_without_template segments, locals, collection_data = [], @locals, @collection_data |