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:
parent
521ef3c40f
commit
bf9b81e2cb
2 changed files with 31 additions and 4 deletions
|
@ -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
|
||||
|
|
|
@ -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'
|
||||
|
|
Loading…
Reference in a new issue