diff options
author | Sammy Larbi <sam@codeodor.com> | 2014-08-30 17:19:16 -0500 |
---|---|---|
committer | Sammy Larbi <sam@codeodor.com> | 2014-08-31 11:39:46 -0500 |
commit | 2fae37f0acbb4154fe75c22a892f79e158016866 (patch) | |
tree | 9dc3938355e2050227be0ac020e11d74b2d7b8df /actionpack/lib/action_dispatch/routing | |
parent | eb8aa4d9fb6d2d2dc196b527d16f2564bcb1ce8e (diff) | |
download | rails-2fae37f0acbb4154fe75c22a892f79e158016866.tar.gz rails-2fae37f0acbb4154fe75c22a892f79e158016866.tar.bz2 rails-2fae37f0acbb4154fe75c22a892f79e158016866.zip |
Allow polymorphic routes with nil when a route can still be drawn
Suppose you have two resources routed in the following manner:
```ruby
resources :blogs do
resources :posts
end
resources :posts
```
When using polymorphic resource routing like `url_for([@blog, @post])`, and `@blog` is `nil` Rails should still try to match the route to the top-level posts resource.
Fixes #16754
Diffstat (limited to 'actionpack/lib/action_dispatch/routing')
-rw-r--r-- | actionpack/lib/action_dispatch/routing/polymorphic_routes.rb | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb b/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb index 427a5674bd..f15868d37e 100644 --- a/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb +++ b/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb @@ -197,7 +197,8 @@ module ActionDispatch case record_or_hash_or_array when Array - if record_or_hash_or_array.empty? || record_or_hash_or_array.include?(nil) + record_or_hash_or_array = record_or_hash_or_array.compact + if record_or_hash_or_array.empty? raise ArgumentError, "Nil location provided. Can't build URI." end if record_or_hash_or_array.first.is_a?(ActionDispatch::Routing::RoutesProxy) |