From 521ef3c40f34d61d42d092eb39348a1be52ac57d Mon Sep 17 00:00:00 2001
From: Joshua Peek <josh@joshpeek.com>
Date: Wed, 13 Jan 2010 11:45:27 -0600
Subject: Passing in a crud action overloads the default action instead of
 creating a new member action.

---
 actionpack/lib/action_dispatch/routing/mapper.rb | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

(limited to 'actionpack/lib/action_dispatch/routing')

diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb
index f7fb4ddd7a..e283cf0403 100644
--- a/actionpack/lib/action_dispatch/routing/mapper.rb
+++ b/actionpack/lib/action_dispatch/routing/mapper.rb
@@ -321,6 +321,8 @@ module ActionDispatch
       end
 
       module Resources
+        CRUD_ACTIONS = [:index, :show, :new, :edit, :create, :update, :destroy]
+
         class Resource #:nodoc:
           attr_reader :plural, :singular
 
@@ -489,8 +491,13 @@ module ActionDispatch
           end
 
           if args.first.is_a?(Symbol)
-            with_exclusive_name_prefix(args.first) do
-              return match("/#{args.first}(.:format)", options.merge(:to => args.first.to_sym))
+            action = args.first
+            if CRUD_ACTIONS.include?(action)
+              return match("(.:format)", options.merge(:to => action))
+            else
+              with_exclusive_name_prefix(action) do
+                return match("/#{action}(.:format)", options.merge(:to => action))
+              end
             end
           end
 
-- 
cgit v1.2.3