Skip to content

Commit

Permalink
layout_for works again with objects as specified in the documentation…
Browse files Browse the repository at this point in the history
… and Rails 2.3 [#5357 state:resolved]
  • Loading branch information
José Valim & Carlos Antonio da Silva authored and josevalim committed Aug 11, 2010
1 parent f5c5cdd commit f08b58d
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 4 deletions.
12 changes: 8 additions & 4 deletions actionpack/lib/action_view/render/layouts.rb
Expand Up @@ -47,11 +47,15 @@ module Layouts
# Hello David
# </html>
#
def _layout_for(name = nil, &block) #:nodoc:
if !block || name
@_content_for[name || :layout].html_safe
def _layout_for(*args, &block) #:nodoc:
name = args.first

if name.is_a?(Symbol)
@_content_for[name].html_safe
elsif block
capture(*args, &block)
else
capture(&block)
@_content_for[:layout].html_safe
end
end

Expand Down
1 change: 1 addition & 0 deletions actionpack/test/fixtures/layouts/_customers.erb
@@ -0,0 +1 @@
<title><%= yield Struct.new(:name).new("David") %></title>
1 change: 1 addition & 0 deletions actionpack/test/fixtures/test/layout_render_object.erb
@@ -0,0 +1 @@
<%= render :layout => "layouts/customers" do |customer| %><%= customer.name %><% end %>
5 changes: 5 additions & 0 deletions actionpack/test/template/render_test.rb
Expand Up @@ -252,6 +252,11 @@ def test_render_with_file_in_layout
assert_equal %(\n<title>title</title>\n\n),
@view.render(:file => "test/layout_render_file.erb")
end

def test_render_layout_with_object
assert_equal %(<title>David</title>),
@view.render(:file => "test/layout_render_object.erb")
end
end

class CachedViewRenderTest < ActiveSupport::TestCase
Expand Down

0 comments on commit f08b58d

Please sign in to comment.