mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Fix resources ignoring scope options
Signed-off-by: José Valim <jose.valim@gmail.com>
This commit is contained in:
parent
47bf19c848
commit
a7edddf605
2 changed files with 32 additions and 4 deletions
|
@ -581,6 +581,7 @@ module ActionDispatch
|
|||
|
||||
def resource(*resources, &block)
|
||||
options = resources.extract_options!
|
||||
options = (@scope[:options] || {}).merge(options)
|
||||
|
||||
if apply_common_behavior_for(:resource, resources, options, &block)
|
||||
return self
|
||||
|
@ -611,6 +612,7 @@ module ActionDispatch
|
|||
|
||||
def resources(*resources, &block)
|
||||
options = resources.extract_options!
|
||||
options = (@scope[:options] || {}).merge(options)
|
||||
|
||||
if apply_common_behavior_for(:resources, resources, options, &block)
|
||||
return self
|
||||
|
|
|
@ -229,10 +229,13 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
|
|||
root :to => 'projects#index'
|
||||
end
|
||||
|
||||
resources :products, :constraints => { :id => /\d{4}/ } do
|
||||
root :to => "products#root"
|
||||
get :favorite, :on => :collection
|
||||
resources :images
|
||||
scope :only => [:index, :show] do
|
||||
resources :products, :constraints => { :id => /\d{4}/ } do
|
||||
root :to => "products#root"
|
||||
get :favorite, :on => :collection
|
||||
resources :images
|
||||
end
|
||||
resource :account
|
||||
end
|
||||
|
||||
resource :dashboard, :constraints => { :ip => /192\.168\.1\.\d{1,3}/ }
|
||||
|
@ -1123,6 +1126,29 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
|
|||
end
|
||||
end
|
||||
|
||||
def test_resource_merges_options_from_scope
|
||||
with_test_routes do
|
||||
assert_raise(NameError) { new_account_path }
|
||||
|
||||
get '/account/new'
|
||||
assert_equal 404, status
|
||||
end
|
||||
end
|
||||
|
||||
def test_resources_merges_options_from_scope
|
||||
with_test_routes do
|
||||
assert_raise(NoMethodError) { edit_product_path('1') }
|
||||
|
||||
get '/products/1/edit'
|
||||
assert_equal 404, status
|
||||
|
||||
assert_raise(NoMethodError) { edit_product_image_path('1', '2') }
|
||||
|
||||
post '/products/1/images/2/edit'
|
||||
assert_equal 404, status
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def with_test_routes
|
||||
yield
|
||||
|
|
Loading…
Reference in a new issue