Its now possible to use match 'stuff' => 'what#stuff' instead of using the :to for simple routes

This commit is contained in:
David Heinemeier Hansson
2009-12-20 20:37:36 -08:00
parent 8763b78f89
commit 3ff9e9ee14
2 changed files with 20 additions and 6 deletions

View File

@@ -39,9 +39,13 @@ module ActionDispatch
end
def match(*args)
options = args.extract_options!
path = args.first
if args.one? && args.first.is_a?(Hash)
path = args.first.keys.first
options = { :to => args.first.values.first }
else
path = args.first
options = args.extract_options!
end
conditions, defaults = {}, {}

View File

@@ -22,6 +22,7 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
delete 'logout', :to => :destroy, :as => :logout
end
match 'account/logout' => redirect("/logout")
match 'account/login', :to => redirect("/login")
match 'account/modulo/:name', :to => redirect("/%{name}s")
@@ -37,11 +38,11 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
end
constraints(:ip => /192\.168\.1\.\d\d\d/) do
get 'admin', :to => "queenbee#index"
get 'admin' => "queenbee#index"
end
constraints ::TestRoutingMapper::IpRestrictor do
get 'admin/accounts', :to => "queenbee#accounts"
get 'admin/accounts' => "queenbee#accounts"
end
resources :projects, :controller => :project do
@@ -85,7 +86,7 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
end
end
match 'sprockets.js', :to => ::TestRoutingMapper::SprocketsApp
match 'sprockets.js' => ::TestRoutingMapper::SprocketsApp
match 'people/:id/update', :to => 'people#update', :as => :update_person
match '/projects/:project_id/people/:id/update', :to => 'people#update', :as => :update_project_person
@@ -148,6 +149,15 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
end
end
def test_logout_redirect_without_to
with_test_routes do
get '/account/logout'
assert_equal 301, @response.status
assert_equal 'http://www.example.com/logout', @response.headers['Location']
assert_equal 'Moved Permanently', @response.body
end
end
def test_redirect_modulo
with_test_routes do
get '/account/modulo/name'