mirror of https://github.com/rails/rails
Take Hash with options inside Array in #url_for
This commit is contained in:
parent
77ed4d98a7
commit
d04c4fac3b
|
@ -1,3 +1,12 @@
|
|||
* Take a hash with options inside array in #url_for
|
||||
|
||||
Example:
|
||||
|
||||
url_for [:new, :admin, :post, { param: 'value' }]
|
||||
# => http://example.com/admin/posts/new?params=value
|
||||
|
||||
*Andrey Ognevsky*
|
||||
|
||||
* Add `session#fetch` method
|
||||
|
||||
fetch behaves similarly to [Hash#fetch](http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-fetch),
|
||||
|
|
|
@ -155,6 +155,8 @@ module ActionDispatch
|
|||
_routes.url_for(options.symbolize_keys.reverse_merge!(url_options))
|
||||
when String
|
||||
options
|
||||
when Array
|
||||
polymorphic_url(options, options.extract_options!)
|
||||
else
|
||||
polymorphic_url(options)
|
||||
end
|
||||
|
|
|
@ -370,6 +370,24 @@ module AbstractController
|
|||
assert_equal("/c/a?show=false", W.new.url_for(:only_path => true, :controller => 'c', :action => 'a', :show => false))
|
||||
end
|
||||
|
||||
def test_url_generation_with_array_and_hash
|
||||
with_routing do |set|
|
||||
set.draw do
|
||||
namespace :admin do
|
||||
resources :posts
|
||||
end
|
||||
end
|
||||
|
||||
kls = Class.new { include set.url_helpers }
|
||||
kls.default_url_options[:host] = 'www.basecamphq.com'
|
||||
|
||||
controller = kls.new
|
||||
assert_equal("http://www.basecamphq.com/admin/posts/new?param=value",
|
||||
controller.send(:url_for, [:new, :admin, :post, { param: 'value' }])
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def extract_params(url)
|
||||
url.split('?', 2).last.split('&').sort
|
||||
|
|
|
@ -83,6 +83,8 @@ module ActionView
|
|||
super
|
||||
when :back
|
||||
_back_url
|
||||
when Array
|
||||
polymorphic_path(options, options.extract_options!)
|
||||
else
|
||||
polymorphic_path(options)
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue