1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Fix: when using subdomains and constraints, request params were not passed to constraints callback

This commit is contained in:
karevn 2011-11-28 00:55:50 +06:00
parent 71b387d91e
commit 9b654d4713
2 changed files with 16 additions and 2 deletions

View file

@ -588,7 +588,8 @@ module ActionDispatch
params[key] = URI.parser.unescape(value)
end
end
old_params = env[::ActionDispatch::Routing::RouteSet::PARAMETERS_KEY]
env[::ActionDispatch::Routing::RouteSet::PARAMETERS_KEY] = (old_params || {}).merge(params)
dispatcher = route.app
while dispatcher.is_a?(Mapper::Constraints) && dispatcher.matches?(env) do
dispatcher = dispatcher.app

View file

@ -1258,7 +1258,20 @@ class RouteSetTest < ActiveSupport::TestCase
end
end
end
def test_route_with_subdomain_and_constraints_must_receive_params
name_param = nil
set.draw do
match 'page/:name' => 'pages#show', :constraints => lambda {|request|
name_param = request.params[:name]
return true
}
end
assert_equal({:controller => 'pages', :action => 'show', :name => 'mypage'},
set.recognize_path('http://subdomain.example.org/page/mypage'))
assert_equal(name_param, 'mypage')
end
def test_route_requirement_recognize_with_ignore_case
set.draw do
match 'page/:name' => 'pages#show',