aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHugo Peixoto <theorem@Nayru.(none)>2009-08-09 07:28:29 +0100
committerJeremy Kemper <jeremy@bitsweat.net>2009-08-09 14:26:36 -0700
commit202b091373ed4d6c78adc7af5e89a359ff0fff2d (patch)
treef910173234c46910020412e0609581f842075b12
parente1b73b975264c622f692a46eec060ff35a588d96 (diff)
downloadrails-202b091373ed4d6c78adc7af5e89a359ff0fff2d.tar.gz
rails-202b091373ed4d6c78adc7af5e89a359ff0fff2d.tar.bz2
rails-202b091373ed4d6c78adc7af5e89a359ff0fff2d.zip
Added both the documentation and a test case for the collection path name customization feature.
[#1218 state:committed] Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
-rw-r--r--actionpack/lib/action_controller/routing/resources.rb5
-rw-r--r--actionpack/test/controller/resources_test.rb44
2 files changed, 47 insertions, 2 deletions
diff --git a/actionpack/lib/action_controller/routing/resources.rb b/actionpack/lib/action_controller/routing/resources.rb
index c1ebd46b48..7fd3ffd3f1 100644
--- a/actionpack/lib/action_controller/routing/resources.rb
+++ b/actionpack/lib/action_controller/routing/resources.rb
@@ -320,9 +320,10 @@ module ActionController
# notes.resources :attachments
# end
#
- # * <tt>:path_names</tt> - Specify different names for the 'new' and 'edit' actions. For example:
+ # * <tt>:path_names</tt> - Specify different path names for the actions. For example:
# # new_products_path == '/productos/nuevo'
- # map.resources :products, :as => 'productos', :path_names => { :new => 'nuevo', :edit => 'editar' }
+ # # bids_product_path(1) == '/productos/1/licitacoes'
+ # map.resources :products, :as => 'productos', :member => { :bids => :get }, :path_names => { :new => 'nuevo', :bids => 'licitacoes' }
#
# You can also set default action names from an environment, like this:
# config.action_controller.resources_path_names = { :new => 'nuevo', :edit => 'editar' }
diff --git a/actionpack/test/controller/resources_test.rb b/actionpack/test/controller/resources_test.rb
index 30ab110ef7..0b639e363d 100644
--- a/actionpack/test/controller/resources_test.rb
+++ b/actionpack/test/controller/resources_test.rb
@@ -76,6 +76,50 @@ class ResourcesTest < ActionController::TestCase
end
end
+ def test_override_paths_for_member_and_collection_methods
+ collection_methods = { 'rss' => :get, 'reorder' => :post, 'csv' => :post }
+ member_methods = { 'rss' => :get, :atom => :get, :upload => :post, :fix => :post }
+ path_names = {:new => 'nuevo', 'rss' => 'canal', :fix => 'corrigir' }
+
+ with_restful_routing :messages,
+ :collection => collection_methods,
+ :member => member_methods,
+ :path_names => path_names do
+
+ assert_restful_routes_for :messages,
+ :collection => collection_methods,
+ :member => member_methods,
+ :path_names => path_names do |options|
+ member_methods.each do |action, method|
+ assert_recognizes(options.merge(:action => action.to_s, :id => '1'),
+ :path => "/messages/1/#{path_names[action] || action}",
+ :method => method)
+ end
+
+ collection_methods.each do |action, method|
+ assert_recognizes(options.merge(:action => action),
+ :path => "/messages/#{path_names[action] || action}",
+ :method => method)
+ end
+ end
+
+ assert_restful_named_routes_for :messages,
+ :collection => collection_methods,
+ :member => member_methods,
+ :path_names => path_names do |options|
+
+ collection_methods.keys.each do |action|
+ assert_named_route "/messages/#{path_names[action] || action}", "#{action}_messages_path", :action => action
+ end
+
+ member_methods.keys.each do |action|
+ assert_named_route "/messages/1/#{path_names[action] || action}", "#{action}_message_path", :action => action, :id => "1"
+ end
+
+ end
+ end
+ end
+
def test_override_paths_for_default_restful_actions
resource = ActionController::Resources::Resource.new(:messages,
:path_names => {:new => 'nuevo', :edit => 'editar'})