aboutsummaryrefslogtreecommitdiffstats
path: root/actionview/lib/action_view/routing_url_for.rb
diff options
context:
space:
mode:
authorJoel Ambass <ambass.joel@gmail.com>2018-06-28 01:17:10 +0200
committerJoel Colin Ambass <ambass.joel@gmail.com>2018-10-01 19:31:08 +0200
commitb48c2ade09e9c43d6f7acee02d074a9d54323a70 (patch)
tree31d0656ed48a43ba554ddf11c9fad02e07c136f8 /actionview/lib/action_view/routing_url_for.rb
parentdf9c972afe88e3c9c65bfcd96eddca927a42b5e3 (diff)
downloadrails-b48c2ade09e9c43d6f7acee02d074a9d54323a70.tar.gz
rails-b48c2ade09e9c43d6f7acee02d074a9d54323a70.tar.bz2
rails-b48c2ade09e9c43d6f7acee02d074a9d54323a70.zip
respect path_only option when an array is passed into url_for
The url_for method is now extracting the path_only option in order to determine if polymorphic_path or polymorphic_url should be called. If the path_only option is not set it will be set to true unless the host option is set. This behaviour is the same as when a Hash or Params object is passed. To support this unifying the code responsible for setting this default value has been extracted into a private method
Diffstat (limited to 'actionview/lib/action_view/routing_url_for.rb')
-rw-r--r--actionview/lib/action_view/routing_url_for.rb23
1 files changed, 12 insertions, 11 deletions
diff --git a/actionview/lib/action_view/routing_url_for.rb b/actionview/lib/action_view/routing_url_for.rb
index fd563f34a9..f8ea3aa770 100644
--- a/actionview/lib/action_view/routing_url_for.rb
+++ b/actionview/lib/action_view/routing_url_for.rb
@@ -84,25 +84,24 @@ module ActionView
super(only_path: _generate_paths_by_default)
when Hash
options = options.symbolize_keys
- unless options.key?(:only_path)
- options[:only_path] = only_path?(options[:host])
- end
+ ensure_only_path_option(options)
super(options)
when ActionController::Parameters
- unless options.key?(:only_path)
- options[:only_path] = only_path?(options[:host])
- end
+ ensure_only_path_option(options)
super(options)
when :back
_back_url
when Array
components = options.dup
- if _generate_paths_by_default
- polymorphic_path(components, components.extract_options!)
+ options = components.extract_options!
+ ensure_only_path_option(options)
+
+ if options[:only_path]
+ polymorphic_path(components, options)
else
- polymorphic_url(components, components.extract_options!)
+ polymorphic_url(components, options)
end
else
method = _generate_paths_by_default ? :path : :url
@@ -138,8 +137,10 @@ module ActionView
true
end
- def only_path?(host)
- _generate_paths_by_default unless host
+ def ensure_only_path_option(options)
+ unless options.key?(:only_path)
+ options[:only_path] = _generate_paths_by_default unless options[:host]
+ end
end
end
end