aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-09-09 07:27:44 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-09-09 07:27:44 +0000
commite3c02d8c66ae3df7a58ba7d76dfc464f26dcff67 (patch)
treebb21f2713880c9f8841094e2fcf270fb5c69596d /actionpack/lib
parent46110aa689412816d077b1f248a6cdb4d9552eda (diff)
downloadrails-e3c02d8c66ae3df7a58ba7d76dfc464f26dcff67.tar.gz
rails-e3c02d8c66ae3df7a58ba7d76dfc464f26dcff67.tar.bz2
rails-e3c02d8c66ae3df7a58ba7d76dfc464f26dcff67.zip
Fixed that render :partial would fail when :object was a Hash (due to backwards compatibility issues) #2148 [Sam Stephenson]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2160 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack/lib')
-rwxr-xr-xactionpack/lib/action_controller/base.rb2
-rw-r--r--actionpack/lib/action_view/base.rb5
-rw-r--r--actionpack/lib/action_view/partials.rb2
3 files changed, 6 insertions, 3 deletions
diff --git a/actionpack/lib/action_controller/base.rb b/actionpack/lib/action_controller/base.rb
index b9bab6229a..0c229fda8d 100755
--- a/actionpack/lib/action_controller/base.rb
+++ b/actionpack/lib/action_controller/base.rb
@@ -600,7 +600,7 @@ module ActionController #:nodoc:
if collection = options[:collection]
render_partial_collection(partial, collection, options[:spacer_template], options[:locals], options[:status])
else
- render_partial(partial, options[:object], options[:locals], options[:status])
+ render_partial(partial, ActionView::Base::ObjectWrapper.new(options[:object]), options[:locals], options[:status])
end
elsif options[:nothing]
diff --git a/actionpack/lib/action_view/base.rb b/actionpack/lib/action_view/base.rb
index fbc9a66a05..cbaeedc0fe 100644
--- a/actionpack/lib/action_view/base.rb
+++ b/actionpack/lib/action_view/base.rb
@@ -137,6 +137,9 @@ module ActionView #:nodoc:
@@compiled_templates = CompiledTemplates.new
include @@compiled_templates
+ class ObjectWrapper < Struct.new(:value) #:nodoc:
+ end
+
def self.load_helpers(helper_dir)#:nodoc:
Dir.foreach(helper_dir) do |helper_file|
next unless helper_file =~ /_helper.rb$/
@@ -200,7 +203,7 @@ module ActionView #:nodoc:
elsif options[:partial] && options[:collection]
render_partial_collection(options[:partial], options[:collection], options[:spacer_template], options[:locals])
elsif options[:partial]
- render_partial(options[:partial], options[:object], options[:locals])
+ render_partial(options[:partial], ActionView::Base::ObjectWrapper.new(options[:object]), options[:locals])
elsif options[:inline]
render_template(options[:type] || :rhtml, options[:inline], nil, options[:locals] || {})
end
diff --git a/actionpack/lib/action_view/partials.rb b/actionpack/lib/action_view/partials.rb
index e1dcd4ee9d..5a129f12ab 100644
--- a/actionpack/lib/action_view/partials.rb
+++ b/actionpack/lib/action_view/partials.rb
@@ -52,7 +52,7 @@ module ActionView
local_assigns = extract_local_assigns(local_assigns, deprecated_local_assigns)
local_assigns = local_assigns ? local_assigns.clone : {}
add_counter_to_local_assigns!(partial_name, local_assigns)
- local_assigns[partial_name.intern] ||= object
+ local_assigns[partial_name.intern] ||= object.is_a?(ActionView::Base::ObjectWrapper) ? object.value : object
render("#{path}/_#{partial_name}", local_assigns)
end