diff options
-rw-r--r-- | actionpack/lib/action_dispatch/routing/mapper.rb | 4 | ||||
-rw-r--r-- | actionpack/test/dispatch/routing_test.rb | 17 |
2 files changed, 19 insertions, 2 deletions
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb index 277cb48e50..6ff573443b 100644 --- a/actionpack/lib/action_dispatch/routing/mapper.rb +++ b/actionpack/lib/action_dispatch/routing/mapper.rb @@ -560,10 +560,10 @@ module ActionDispatch if args.first.is_a?(Symbol) action = args.first if CRUD_ACTIONS.include?(action) - return match("(.:format)", options.merge(:to => action)) + return match("(.:format)", options.reverse_merge(:to => action)) else with_exclusive_name_prefix(action) do - return match("/#{action_path(action, resources_path_names)}(.:format)", options.merge(:to => action)) + return match("/#{action_path(action, resources_path_names)}(.:format)", options.reverse_merge(:to => action)) end end end diff --git a/actionpack/test/dispatch/routing_test.rb b/actionpack/test/dispatch/routing_test.rb index 87d8d7730a..2fcc5fef35 100644 --- a/actionpack/test/dispatch/routing_test.rb +++ b/actionpack/test/dispatch/routing_test.rb @@ -97,6 +97,13 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest end end + resources :replies do + member do + put :answer, :to => :mark_as_answer + delete :answer, :to => :unmark_as_answer + end + end + resources :posts, :only => [:index, :show] match 'sprockets.js' => ::TestRoutingMapper::SprocketsApp @@ -437,6 +444,16 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest end end + def test_replies + with_test_routes do + put '/replies/1/answer' + assert_equal 'replies#mark_as_answer', @response.body + + delete '/replies/1/answer' + assert_equal 'replies#unmark_as_answer', @response.body + end + end + def test_posts with_test_routes do get '/posts' |