diff options
author | Joel Ambass <ambass.joel@gmail.com> | 2018-06-28 01:17:10 +0200 |
---|---|---|
committer | Joel Colin Ambass <ambass.joel@gmail.com> | 2018-10-01 19:31:08 +0200 |
commit | b48c2ade09e9c43d6f7acee02d074a9d54323a70 (patch) | |
tree | 31d0656ed48a43ba554ddf11c9fad02e07c136f8 /actionview/lib | |
parent | df9c972afe88e3c9c65bfcd96eddca927a42b5e3 (diff) | |
download | rails-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')
-rw-r--r-- | actionview/lib/action_view/routing_url_for.rb | 23 |
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 |