提交 c67005f2 编写于 作者: C Carlos Antonio da Silva

Do not generate local vars for partials without object or collection

Previously rendering a partial without giving :object or :collection
would generate a local variable with the partial name by default.

This was noticed due to warnings in Ruby 2.0 of not used variables,
which turned out to be the generation of not used variables inside
partials that do not contain objects related to them.
上级 77516a71
## Rails 4.0.0 (unreleased) ##
* Do not generate local variables for partials without object or collection.
Previously rendering a partial without giving `:object` or `:collection`
would generate a local variable with the partial name by default.
*Carlos Antonio da Silva*
* Return the last valid, non-private IP address from the X-Forwarded-For,
Client-IP and Remote-Addr headers, in that order. Document the rationale
for that decision, and describe the options that can be passed to the
......
......@@ -452,7 +452,7 @@ def merge_prefix_into_object_path(prefix, object_path)
def retrieve_template_keys
keys = @locals.keys
keys << @variable
keys << @variable if @object || @collection
keys << @variable_counter if @collection
keys
end
......
......@@ -318,6 +318,13 @@ def test_render_partial_using_collection
@controller_view.render(customers, :greeting => "Hello")
end
def test_render_partial_without_object_or_collection_does_not_generate_partial_name_local_variable
exception = assert_raises ActionView::Template::Error do
@controller_view.render("partial_name_local_variable")
end
assert_match "undefined local variable or method `partial_name_local_variable'", exception.message
end
# TODO: The reason for this test is unclear, improve documentation
def test_render_partial_and_fallback_to_layout
assert_equal "Before (Josh)\n\nAfter", @view.render(:partial => "test/layout_for_partial", :locals => { :name => "Josh" })
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册