layout_for works again with objects as specified in the documentation and Rails 2.3 [#5357 state:resolved]

This commit is contained in:
José Valim & Carlos Antonio da Silva 2010-08-11 10:23:07 -03:00 committed by José Valim
parent f5c5cdd4ae
commit f08b58dd0c
4 changed files with 15 additions and 4 deletions

View File

@ -47,11 +47,15 @@ module ActionView
# 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

View File

@ -0,0 +1 @@
<title><%= yield Struct.new(:name).new("David") %></title>

View File

@ -0,0 +1 @@
<%= render :layout => "layouts/customers" do |customer| %><%= customer.name %><% end %>

View File

@ -252,6 +252,11 @@ module RenderTestCases
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