提交 d1a24492 编写于 作者: N Nicholas Seckar

Fix a bug in Routing where a parameter taken from the path of the current...

Fix a bug in Routing where a parameter taken from the path of the current request could not be used as a query parameter for the next. Closes #6752.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5709 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 a50fc115
*SVN*
* Fix a bug in Routing where a parameter taken from the path of the current request could not be used as a query parameter for the next. Closes #6752. [Nicholas Seckar]
* Unrescued ActiveRecord::RecordNotFound responds with 404 instead of 500. [Jeremy Kemper]
* Improved auto_link to match more valid urls correctly [Tobias Luetke]
......
......@@ -333,10 +333,10 @@ def write_generation
# the query string. (Never use keys from the recalled request when building the
# query string.)
method_decl = "def generate(#{args})\npath, hash = generate_raw(options, hash, expire_on)\nappend_query_string(path, hash, extra_keys(hash, expire_on))\nend"
method_decl = "def generate(#{args})\npath, hash = generate_raw(options, hash, expire_on)\nappend_query_string(path, hash, extra_keys(options))\nend"
instance_eval method_decl, "generated code (#{__FILE__}:#{__LINE__})"
method_decl = "def generate_extras(#{args})\npath, hash = generate_raw(options, hash, expire_on)\n[path, extra_keys(hash, expire_on)]\nend"
method_decl = "def generate_extras(#{args})\npath, hash = generate_raw(options, hash, expire_on)\n[path, extra_keys(options)]\nend"
instance_eval method_decl, "generated code (#{__FILE__}:#{__LINE__})"
raw_method
end
......@@ -1224,7 +1224,7 @@ def generate(options, recall = {}, method=:generate)
# drop the leading '/' on the controller name
options[:controller] = options[:controller][1..-1] if options[:controller] && options[:controller][0] == ?/
merged = recall.merge(options)
if named_route
path = named_route.generate(options, merged, expire_on)
raise RoutingError, "#{named_route_name}_url failed to generate from #{options.inspect}, expected: #{named_route.requirements.inspect}, diff: #{named_route.requirements.diff(options).inspect}" if path.nil?
......
......@@ -1687,6 +1687,17 @@ def test_action_left_off_when_id_is_recalled
)
end
def test_query_params_will_be_shown_when_recalled
set.draw do |map|
map.connect 'show_post/:parameter', :controller => 'post', :action => 'show'
map.connect ':controller/:action/:id'
end
assert_equal '/post/edit?parameter=1', set.generate(
{:action => 'edit', :parameter => 1},
{:controller => 'post', :action => 'show', :parameter => 1}
)
end
end
class RoutingTest < Test::Unit::TestCase
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册