aboutsummaryrefslogtreecommitdiffstats
path: root/actionview
diff options
context:
space:
mode:
authoryui-knk <spiketeika@gmail.com>2015-11-13 11:41:24 +0900
committeryui-knk <spiketeika@gmail.com>2015-11-13 12:26:15 +0900
commit429bd260c1cca8af1aac0ec31b85e487dc14b123 (patch)
tree8791424d41845e5e0a2391a23414bac23da41896 /actionview
parent0db310586ac3e15be95d2ef27ff40cfa24c05c10 (diff)
downloadrails-429bd260c1cca8af1aac0ec31b85e487dc14b123.tar.gz
rails-429bd260c1cca8af1aac0ec31b85e487dc14b123.tar.bz2
rails-429bd260c1cca8af1aac0ec31b85e487dc14b123.zip
Respect value of `:object` if `:object` is false when rendering
This commit fixes the bug convering `false` to `locals[as]` when `options[:object]` is `false` (close #22260).
Diffstat (limited to 'actionview')
-rw-r--r--actionview/CHANGELOG.md6
-rw-r--r--actionview/lib/action_view/renderer/partial_renderer.rb2
-rw-r--r--actionview/test/fixtures/test/_klass.erb1
-rw-r--r--actionview/test/template/render_test.rb2
4 files changed, 10 insertions, 1 deletions
diff --git a/actionview/CHANGELOG.md b/actionview/CHANGELOG.md
index 023067632b..700ca86944 100644
--- a/actionview/CHANGELOG.md
+++ b/actionview/CHANGELOG.md
@@ -1,3 +1,9 @@
+* Respect value of `:object` if `:object` is false when rendering.
+
+ Fixes #22260.
+
+ *Yuichiro Kaneko*
+
* Generate `week_field` input values using a 1-based index and not a 0-based index
as per the W3 spec: http://www.w3.org/TR/html-markup/datatypes.html#form.data.week
diff --git a/actionview/lib/action_view/renderer/partial_renderer.rb b/actionview/lib/action_view/renderer/partial_renderer.rb
index a78bf0a6e9..bdbf03191a 100644
--- a/actionview/lib/action_view/renderer/partial_renderer.rb
+++ b/actionview/lib/action_view/renderer/partial_renderer.rb
@@ -337,7 +337,7 @@ module ActionView
layout = find_template(layout.to_s, @template_keys)
end
- object ||= locals[as]
+ object = locals[as] if object.nil? # Respect object when object is false
locals[as] = object if @has_object
content = @template.render(view, locals) do |*name|
diff --git a/actionview/test/fixtures/test/_klass.erb b/actionview/test/fixtures/test/_klass.erb
new file mode 100644
index 0000000000..9936f86001
--- /dev/null
+++ b/actionview/test/fixtures/test/_klass.erb
@@ -0,0 +1 @@
+<%= klass.class.name %> \ No newline at end of file
diff --git a/actionview/test/template/render_test.rb b/actionview/test/template/render_test.rb
index 51bc59edae..84aca222b2 100644
--- a/actionview/test/template/render_test.rb
+++ b/actionview/test/template/render_test.rb
@@ -247,6 +247,8 @@ module RenderTestCases
def test_render_object
assert_equal "Hello: david", @view.render(:partial => "test/customer", :object => Customer.new("david"))
+ assert_equal "FalseClass", @view.render(:partial => "test/klass", :object => false)
+ assert_equal "NilClass", @view.render(:partial => "test/klass", :object => nil)
end
def test_render_object_with_array