mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Filter params that return nil for to_param and allow through false values
This commit is contained in:
parent
f41dd99be7
commit
03cbd9672c
4 changed files with 13 additions and 2 deletions
|
@ -1,5 +1,9 @@
|
||||||
*Rails 3.1.0 (unreleased)*
|
*Rails 3.1.0 (unreleased)*
|
||||||
|
|
||||||
|
* URL parameters which return false for to_param now appear in the query string (previously they were removed) [Andrew White]
|
||||||
|
|
||||||
|
* URL parameters which return nil for to_param are now removed from the query string [Andrew White]
|
||||||
|
|
||||||
* ActionDispatch::MiddlewareStack now uses composition over inheritance. It is
|
* ActionDispatch::MiddlewareStack now uses composition over inheritance. It is
|
||||||
no longer an array which means there may be methods missing that were not
|
no longer an array which means there may be methods missing that were not
|
||||||
tested.
|
tested.
|
||||||
|
|
|
@ -41,7 +41,7 @@ module ActionDispatch
|
||||||
path = options.delete(:path) || ''
|
path = options.delete(:path) || ''
|
||||||
|
|
||||||
params = options[:params] || {}
|
params = options[:params] || {}
|
||||||
params.reject! {|k,v| !v }
|
params.reject! {|k,v| v.to_param.nil? }
|
||||||
|
|
||||||
rewritten_url << (options[:trailing_slash] ? path.sub(/\?|\z/) { "/" + $& } : path)
|
rewritten_url << (options[:trailing_slash] ? path.sub(/\?|\z/) { "/" + $& } : path)
|
||||||
rewritten_url << "?#{params.to_query}" unless params.empty?
|
rewritten_url << "?#{params.to_query}" unless params.empty?
|
||||||
|
|
|
@ -131,7 +131,6 @@ module ActionView
|
||||||
"new Ajax.Updater(#{update}, "
|
"new Ajax.Updater(#{update}, "
|
||||||
|
|
||||||
url_options = options[:url]
|
url_options = options[:url]
|
||||||
url_options = url_options.merge(:escape => false) if url_options.is_a?(Hash)
|
|
||||||
function << "'#{ERB::Util.html_escape(escape_javascript(url_for(url_options)))}'"
|
function << "'#{ERB::Util.html_escape(escape_javascript(url_for(url_options)))}'"
|
||||||
function << ", #{javascript_options})"
|
function << ", #{javascript_options})"
|
||||||
|
|
||||||
|
|
|
@ -311,6 +311,14 @@ module AbstractController
|
||||||
assert_equal("/c/a", W.new.url_for(HashWithIndifferentAccess.new('controller' => 'c', 'action' => 'a', 'only_path' => true)))
|
assert_equal("/c/a", W.new.url_for(HashWithIndifferentAccess.new('controller' => 'c', 'action' => 'a', 'only_path' => true)))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_url_params_with_nil_to_param_are_not_in_url
|
||||||
|
assert_equal("/c/a", W.new.url_for(:only_path => true, :controller => 'c', :action => 'a', :id => Struct.new(:to_param).new(nil)))
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_false_url_params_are_included_in_query
|
||||||
|
assert_equal("/c/a?show=false", W.new.url_for(:only_path => true, :controller => 'c', :action => 'a', :show => false))
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def extract_params(url)
|
def extract_params(url)
|
||||||
url.split('?', 2).last.split('&').sort
|
url.split('?', 2).last.split('&').sort
|
||||||
|
|
Loading…
Reference in a new issue