A bit more routes refactoring and test

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1564 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 94cae0d0
......@@ -554,6 +554,10 @@ def method_missing(name, *args)
NamedRoutes.name_route(route, name)
route
end
def extra_keys(options, recall = {})
generate(options.dup, recall).last.keys
end
end
module NamedRoutes
......
......@@ -67,12 +67,12 @@ def path
@path || super()
end
def generate_route_and_assign_parameters(controller_path, action, parameters)
def assign_parameters(controller_path, action, parameters)
parameters = parameters.symbolize_keys.merge(:controller => controller_path, :action => action)
path, extras = ActionController::Routing::Routes.generate(parameters.dup)
extra_keys = ActionController::Routing::Routes.extra_keys(parameters)
non_path_parameters = get? ? query_parameters : request_parameters
parameters.each do |key, value|
if extras.key?(key.to_sym) then non_path_parameters[key] = value
if extra_keys.include?(key.to_sym) then non_path_parameters[key] = value
else path_parameters[key] = value.to_s
end
end
......@@ -251,7 +251,7 @@ def process(action, parameters = nil, session = nil, flash = nil)
@request.action = action.to_s
parameters ||= {}
@request.generate_route_and_assign_parameters(@controller.class.controller_path, action.to_s, parameters)
@request.assign_parameters(@controller.class.controller_path, action.to_s, parameters)
@request.session = ActionController::TestSession.new(session) unless session.nil?
@request.session["flash"] = ActionController::Flash::FlashHash.new.update(flash) if flash
......@@ -344,4 +344,4 @@ def method_missing(selector, *args)
end
end
end
end
\ No newline at end of file
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册