From e758c2e9db63d8b0a01c659a74e8f1dec22a72d0 Mon Sep 17 00:00:00 2001 From: Jamis Buck Date: Thu, 1 Sep 2005 21:51:27 +0000 Subject: [PATCH] Yield @content_for_ variables to templates #2058 [Sam Stephenson] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2094 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_view/base.rb | 4 +++- actionpack/test/controller/new_render_test.rb | 9 +++++++++ actionpack/test/fixtures/layouts/yield.rhtml | 2 ++ 4 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 actionpack/test/fixtures/layouts/yield.rhtml diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 82f72df2bf..9189a076e5 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Yield @content_for_ variables to templates #2058 [Sam Stephenson] + * Make rendering an empty partial collection behave like :nothing => true #2080 [Sam Stephenson] * Add option to specify the singular name used by pagination. diff --git a/actionpack/lib/action_view/base.rb b/actionpack/lib/action_view/base.rb index 923a1c28da..fbc9a66a05 100644 --- a/actionpack/lib/action_view/base.rb +++ b/actionpack/lib/action_view/base.rb @@ -243,7 +243,9 @@ def compile_and_render_template(extension, template = nil, file_path = nil, loca # Get the selector for this template and names, then call the method. selector = @@compiled_templates.selector(identifier, names) evaluate_assigns - send(selector, *params) + send(selector, *params) do |*name| + instance_variable_get "@content_for_#{name.first || 'layout'}" + end end def pick_template_extension(template_path)#:nodoc: diff --git a/actionpack/test/controller/new_render_test.rb b/actionpack/test/controller/new_render_test.rb index 7cb3643db5..7c829e68de 100644 --- a/actionpack/test/controller/new_render_test.rb +++ b/actionpack/test/controller/new_render_test.rb @@ -149,6 +149,10 @@ def render_text_with_assigns render :text => "foo" end + def yield_content_for + render :action => "content_for", :layout => "yield" + end + def rescue_action(e) raise end private @@ -371,4 +375,9 @@ def test_render_text_with_assigns get :render_text_with_assigns assert_equal "world", assigns["hello"] end + + def test_yield_content_for + get :yield_content_for + assert_equal "Putting stuff in the title!\n\nGreat stuff!\n", @response.body + end end diff --git a/actionpack/test/fixtures/layouts/yield.rhtml b/actionpack/test/fixtures/layouts/yield.rhtml new file mode 100644 index 0000000000..482dc9022e --- /dev/null +++ b/actionpack/test/fixtures/layouts/yield.rhtml @@ -0,0 +1,2 @@ +<%= yield :title %> +<%= yield %> -- GitLab