Clear route defaults using :name => nil #663

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@671 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
David Heinemeier Hansson
2005-02-18 23:53:18 +00:00
parent 519fe7ccbc
commit 5760a6cb3e
2 changed files with 7 additions and 1 deletions

View File

@@ -176,6 +176,7 @@ module ActionController
options = options.symbolize_keys
defaults = request.path_parameters.symbolize_keys
expand_controller_path!(options, defaults)
defaults.delete_if {|k, v| options.key?(k) && options[k].nil?} # Remove defaults that have been manually cleared using :name => nil
failures = []
selected = nil

View File

@@ -185,7 +185,7 @@ class RouteTests < Test::Unit::TestCase
assert_equal nil, @route.recognize([])[0]
assert_equal nil, @route.recognize(%w{some_static route with more than expected})[0]
end
def test_basecamp
route 'clients/', :controller => 'content'
verify_generate('clients', {}, {:controller => 'content'}, {}) # Would like to have clients/
@@ -422,6 +422,11 @@ class RouteSetTests < Test::Unit::TestCase
@set.connect ':action/:controller'
verify_generate('index/content', options)
end
def test_default_dropped_with_nil_option
@request.path_parameters = {:controller => 'content', :action => 'action', :id => '10'}
verify_generate 'content/action', {:id => nil}
end
end
#require '../assertions/action_pack_assertions.rb'