diff options
author | Andrew White <andyw@pixeltrix.co.uk> | 2012-05-10 22:52:00 +0100 |
---|---|---|
committer | Andrew White <andyw@pixeltrix.co.uk> | 2012-05-10 22:52:00 +0100 |
commit | 09a48b2324207ccbf6f421e5e7caf7655f1e905a (patch) | |
tree | 44b3894414cb0bfc1ee33bf7e31e69bad8c63f91 /actionpack | |
parent | e306ca3627965bf038d6b39a9480ae57bff9c18e (diff) | |
download | rails-09a48b2324207ccbf6f421e5e7caf7655f1e905a.tar.gz rails-09a48b2324207ccbf6f421e5e7caf7655f1e905a.tar.bz2 rails-09a48b2324207ccbf6f421e5e7caf7655f1e905a.zip |
Don't ignore nil positional arguments for url helpers - fixes #6196.
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_dispatch/routing/route_set.rb | 2 | ||||
-rw-r--r-- | actionpack/test/dispatch/routing_test.rb | 35 |
2 files changed, 36 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/routing/route_set.rb b/actionpack/lib/action_dispatch/routing/route_set.rb index 58c67e2cbe..0ae668d42a 100644 --- a/actionpack/lib/action_dispatch/routing/route_set.rb +++ b/actionpack/lib/action_dispatch/routing/route_set.rb @@ -103,7 +103,7 @@ module ActionDispatch inner_options = args.extract_options! result = options.dup - if args.any? + if args.size > 0 keys = segment_keys if args.size < keys.size - 1 # take format into account keys -= self.url_options.keys if self.respond_to?(:url_options) diff --git a/actionpack/test/dispatch/routing_test.rb b/actionpack/test/dispatch/routing_test.rb index d356187ca8..6f22cb3ea8 100644 --- a/actionpack/test/dispatch/routing_test.rb +++ b/actionpack/test/dispatch/routing_test.rb @@ -2571,3 +2571,38 @@ class TestOptimizedNamedRoutes < ActionDispatch::IntegrationTest assert_equal '/foo', foo_path end end + +class TestNamedRouteUrlHelpers < ActionDispatch::IntegrationTest + class CategoriesController < ActionController::Base + def show + render :text => "categories#show" + end + end + + class ProductsController < ActionController::Base + def show + render :text => "products#show" + end + end + + Routes = ActionDispatch::Routing::RouteSet.new.tap do |app| + app.draw do + scope :module => "test_named_route_url_helpers" do + get "/categories/:id" => 'categories#show', :as => :category + get "/products/:id" => 'products#show', :as => :product + end + end + end + + def app; Routes end + + include Routes.url_helpers + + test "url helpers do not ignore nil parameters when using non-optimized routes" do + Routes.stubs(:optimize_routes_generation?).returns(false) + + get "/categories/1" + assert_response :success + assert_raises(ActionController::RoutingError) { product_path(nil) } + end +end |