1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Pass :as to resources to change the resource name

This commit is contained in:
Joshua Peek 2010-01-13 12:18:06 -06:00
parent 521ef3c40f
commit bf9b81e2cb
2 changed files with 31 additions and 4 deletions

View file

@ -328,13 +328,14 @@ module ActionDispatch
def initialize(entities, options = {})
entities = entities.to_s
@options = options
@plural = entities.pluralize
@singular = entities.singularize
end
def name
plural
@options[:as] || plural
end
def controller
@ -360,7 +361,7 @@ module ActionDispatch
end
def name
singular
@options[:as] || singular
end
end
@ -373,7 +374,7 @@ module ActionDispatch
return self
end
resource = SingletonResource.new(resources.pop)
resource = SingletonResource.new(resources.pop, options)
if @scope[:scope_level] == :resources
nested do
@ -407,7 +408,7 @@ module ActionDispatch
return self
end
resource = Resource.new(resources.pop)
resource = Resource.new(resources.pop, options)
if @scope[:scope_level] == :resources
nested do

View file

@ -109,6 +109,12 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
end
end
namespace :forum do
resources :products, :as => '' do
resources :questions
end
end
controller :articles do
scope '/articles', :name_prefix => 'article' do
scope :path => '/:title', :title => /[a-z]+/, :as => :with_title do
@ -441,6 +447,26 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
end
end
def test_forum_products
with_test_routes do
get '/forum'
assert_equal 'forum/products#index', @response.body
assert_equal '/forum', forum_products_path
get '/forum/basecamp'
assert_equal 'forum/products#show', @response.body
assert_equal '/forum/basecamp', forum_product_path(:id => 'basecamp')
get '/forum/basecamp/questions'
assert_equal 'forum/questions#index', @response.body
assert_equal '/forum/basecamp/questions', forum_product_questions_path(:product_id => 'basecamp')
get '/forum/basecamp/questions/1'
assert_equal 'forum/questions#show', @response.body
assert_equal '/forum/basecamp/questions/1', forum_product_question_path(:product_id => 'basecamp', :id => 1)
end
end
def test_articles_perma
with_test_routes do
get '/articles/2009/08/18/rails-3'