提交 019eea4a 编写于 作者: P Pawel Pierzchala

Fix named routes modifying arguments

上级 2bf33bd4
......@@ -165,13 +165,14 @@ def define_hash_access(route, name, kind, options)
remove_possible_method :#{selector}
def #{selector}(*args)
options = args.extract_options!
result = #{options.inspect}
if args.any?
options[:_positional_args] = args
options[:_positional_keys] = #{route.segment_keys.inspect}
result[:_positional_args] = args
result[:_positional_keys] = #{route.segment_keys.inspect}
end
options ? #{options.inspect}.merge(options) : #{options.inspect}
result.merge(options)
end
protected :#{selector}
END_EVAL
......
......@@ -863,6 +863,17 @@ def test_url_for_with_no_side_effects
assert_equal original_options, options
end
# tests the arguments modification free version of define_hash_access
def test_named_route_with_no_side_effects
original_options = { :host => 'test.host' }
options = original_options.dup
profile_customer_url("customer_model", options)
# verify that the options passed in have not changed from the original ones
assert_equal original_options, options
end
def test_projects_status
with_test_routes do
assert_equal '/projects/status', url_for(:controller => 'projects', :action => 'status', :only_path => true)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册