diff options
author | Ryan Bates <ryan@railscasts.com> | 2008-08-17 19:29:24 -0500 |
---|---|---|
committer | Joshua Peek <josh@joshpeek.com> | 2008-08-17 19:29:24 -0500 |
commit | 38c7d73e73d569211c4dfadf96fc295a925b7c9c (patch) | |
tree | 9400fbbd277dafdde822fb9d3968f30764dbe9da /actionpack/lib/action_view/base.rb | |
parent | dbb0abfb7e9eb9a63b721a38625e3eff66ced49d (diff) | |
download | rails-38c7d73e73d569211c4dfadf96fc295a925b7c9c.tar.gz rails-38c7d73e73d569211c4dfadf96fc295a925b7c9c.tar.bz2 rails-38c7d73e73d569211c4dfadf96fc295a925b7c9c.zip |
pass yielded arguments to block for ActionView::Base#render with :layout [#847 state:resolved]
Signed-off-by: Joshua Peek <josh@joshpeek.com>
Diffstat (limited to 'actionpack/lib/action_view/base.rb')
-rw-r--r-- | actionpack/lib/action_view/base.rb | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/actionpack/lib/action_view/base.rb b/actionpack/lib/action_view/base.rb index ad59d92086..f7f9f70298 100644 --- a/actionpack/lib/action_view/base.rb +++ b/actionpack/lib/action_view/base.rb @@ -246,12 +246,18 @@ module ActionView #:nodoc: if partial_layout = options.delete(:layout) if block_given? - wrap_content_for_layout capture(&block) do + begin + @_proc_for_layout = block concat(render(options.merge(:partial => partial_layout))) + ensure + @_proc_for_layout = nil end else - wrap_content_for_layout render(options) do + begin + original_content_for_layout, @content_for_layout = @content_for_layout, render(options) render(options.merge(:partial => partial_layout)) + ensure + @content_for_layout = original_content_for_layout end end elsif options[:file] @@ -367,13 +373,6 @@ module ActionView #:nodoc: InlineTemplate.new(text, type).render(self, local_assigns) end - def wrap_content_for_layout(content) - original_content_for_layout, @content_for_layout = @content_for_layout, content - yield - ensure - @content_for_layout = original_content_for_layout - end - # Evaluate the local assigns and pushes them to the view. def evaluate_assigns unless @assigns_added @@ -392,11 +391,5 @@ module ActionView #:nodoc: controller.response.content_type ||= content_type end end - - def execute(method, local_assigns = {}) - send(method, local_assigns) do |*names| - instance_variable_get "@content_for_#{names.first || 'layout'}" - end - end end end |