aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb
diff options
context:
space:
mode:
authorRomain Tribes <tribes.romain@gmail.com>2012-08-04 10:00:33 +0200
committerRomain Tribes <tribes.romain@gmail.com>2012-08-04 10:04:05 +0200
commit61c8a4d926343903593a27080216af7e4ed81268 (patch)
tree837919b54bdb5bd78cd8a49a4b995ced1610c4c2 /actionpack/lib/action_dispatch/routing/polymorphic_routes.rb
parent5fe923cc341b5487fff2b7f2862829367ebd5102 (diff)
downloadrails-61c8a4d926343903593a27080216af7e4ed81268.tar.gz
rails-61c8a4d926343903593a27080216af7e4ed81268.tar.bz2
rails-61c8a4d926343903593a27080216af7e4ed81268.zip
polymorphic_url with an array generates a query string
Generating an URL with an array of records is now able to build a query string if the last item of the array is a hash.
Diffstat (limited to 'actionpack/lib/action_dispatch/routing/polymorphic_routes.rb')
-rw-r--r--actionpack/lib/action_dispatch/routing/polymorphic_routes.rb5
1 files changed, 4 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb b/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb
index 3d7b8878b8..7bdd9244d1 100644
--- a/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb
+++ b/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb
@@ -62,6 +62,7 @@ module ActionDispatch
#
# # calls post_url(post)
# polymorphic_url(post) # => "http://example.com/posts/1"
+ # polymorphic_url([post, :foo => 'bar']) # => "http://example.com/posts/1?foo=bar"
# polymorphic_url([blog, post]) # => "http://example.com/blogs/1/posts/1"
# polymorphic_url([:admin, blog, post]) # => "http://example.com/admin/blogs/1/posts/1"
# polymorphic_url([user, :blog, post]) # => "http://example.com/users/1/blog/posts/1"
@@ -164,6 +165,7 @@ module ActionDispatch
def build_named_route_call(records, inflection, options = {})
if records.is_a?(Array)
+ query_string = records.pop if records.last.is_a?(Hash)
record = records.pop
route = records.map do |parent|
if parent.is_a?(Symbol) || parent.is_a?(String)
@@ -196,7 +198,8 @@ module ActionDispatch
def extract_record(record_or_hash_or_array)
case record_or_hash_or_array
- when Array; record_or_hash_or_array.last
+ when Array
+ record_or_hash_or_array.last.is_a?(Hash) ? record_or_hash_or_array[-2] : record_or_hash_or_array.last
when Hash; record_or_hash_or_array[:id]
else record_or_hash_or_array
end