mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Correct the use of params options when given to url_for
Merge url for tests and add changelog entry for #8233.
This commit is contained in:
parent
e492c446d5
commit
ce60672342
3 changed files with 16 additions and 10 deletions
|
@ -1,5 +1,17 @@
|
|||
## Rails 4.0.0 (unreleased) ##
|
||||
|
||||
* Fix error when using a non-hash query argument named "params" in `url_for`.
|
||||
|
||||
Before:
|
||||
|
||||
url_for(params: "") # => undefined method `reject!' for "":String
|
||||
|
||||
After:
|
||||
|
||||
url_for(params: "") # => http://www.example.com?params=
|
||||
|
||||
*tumayun + Carlos Antonio da Silva*
|
||||
|
||||
* Render every partial with a new `ActionView::PartialRenderer`. This resolves
|
||||
issues when rendering nested partials.
|
||||
Fix #8197
|
||||
|
|
|
@ -28,7 +28,7 @@ module ActionDispatch
|
|||
path = options.delete(:script_name).to_s.chomp("/")
|
||||
path << options.delete(:path).to_s
|
||||
|
||||
params = options[:params].is_a?(Hash) ? options[:params] : {}
|
||||
params = options[:params].is_a?(Hash) ? options[:params] : options.slice(:params)
|
||||
params.reject! { |_,v| v.to_param.nil? }
|
||||
|
||||
result = build_host_url(options)
|
||||
|
|
|
@ -3,7 +3,7 @@ require 'abstract_unit'
|
|||
class RequestTest < ActiveSupport::TestCase
|
||||
|
||||
def url_for(options = {})
|
||||
options.reverse_merge!(:host => 'www.example.com')
|
||||
options = { host: 'www.example.com' }.merge!(options)
|
||||
ActionDispatch::Http::URL.url_for(options)
|
||||
end
|
||||
|
||||
|
@ -25,6 +25,8 @@ class RequestTest < ActiveSupport::TestCase
|
|||
assert_equal 'http://www.example.com/', url_for(:trailing_slash => true)
|
||||
assert_equal 'http://dhh:supersecret@www.example.com', url_for(:user => 'dhh', :password => 'supersecret')
|
||||
assert_equal 'http://www.example.com?search=books', url_for(:params => { :search => 'books' })
|
||||
assert_equal 'http://www.example.com?params=', url_for(:params => '')
|
||||
assert_equal 'http://www.example.com?params=1', url_for(:params => 1)
|
||||
end
|
||||
|
||||
test "remote ip" do
|
||||
|
@ -799,14 +801,6 @@ class RequestTest < ActiveSupport::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
test "url_for options[:params]" do
|
||||
assert_equal 'http://www.example.com?params=', url_for(:params => '')
|
||||
assert_equal 'http://www.example.com?params=1', url_for(:params => 1)
|
||||
assert_equal 'http://www.example.com', url_for
|
||||
assert_equal 'http://www.example.com', url_for(:params => {})
|
||||
assert_equal 'http://www.example.com?name=tumayun', url_for(:params => { :name => 'tumayun' })
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def stub_request(env = {})
|
||||
|
|
Loading…
Reference in a new issue