aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionpack/lib/action_dispatch/routing/mapper.rb4
-rw-r--r--actionpack/test/dispatch/routing_test.rb17
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'