diff options
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/CHANGELOG.md | 7 | ||||
-rw-r--r-- | actionpack/lib/action_dispatch/routing/polymorphic_routes.rb | 21 |
2 files changed, 10 insertions, 18 deletions
diff --git a/actionpack/CHANGELOG.md b/actionpack/CHANGELOG.md index de9722c392..4a79b2efec 100644 --- a/actionpack/CHANGELOG.md +++ b/actionpack/CHANGELOG.md @@ -1,3 +1,10 @@ +* Fix bug where `routing_type=path` would end up in query string of paths + generated by `edit_` and `new_polymorphic_path` + + Fixes #17057. + + *Gert Goet* + * Deprecate implicit Array conversion for Response objects. It was added (using `#to_ary`) so we could conveniently use implicit splatting: diff --git a/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb b/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb index f15868d37e..1fa438f2eb 100644 --- a/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb +++ b/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb @@ -116,27 +116,13 @@ module ActionDispatch action, type, opts - end # Returns the path component of a URL for the given record. It uses # <tt>polymorphic_url</tt> with <tt>routing_type: :path</tt>. def polymorphic_path(record_or_hash_or_array, options = {}) - if Hash === record_or_hash_or_array - options = record_or_hash_or_array.merge(options) - record = options.delete :id - return polymorphic_path record, options - end - - opts = options.dup - action = opts.delete :action - type = :path - - HelperMethodBuilder.polymorphic_method self, - record_or_hash_or_array, - action, - type, - opts + opts = options.reverse_merge(:routing_type => :path) + polymorphic_url(record_or_hash_or_array, opts) end @@ -159,8 +145,7 @@ module ActionDispatch end def polymorphic_path_for_action(action, record_or_hash, options) - options = options.merge(:action => action, :routing_type => :path) - polymorphic_path(record_or_hash, options) + polymorphic_path(record_or_hash, options.merge(:action => action)) end class HelperMethodBuilder # :nodoc: |