mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Move edit route before show route so that it will have precedence if the :id parameter allows slashes [#5409 state:resolved]
Signed-off-by: José Valim <jose.valim@gmail.com>
This commit is contained in:
parent
2e45542942
commit
0cc483aa14
2 changed files with 18 additions and 2 deletions
|
@ -586,10 +586,10 @@ module ActionDispatch
|
|||
end if parent_resource.actions.include?(:new)
|
||||
|
||||
member_scope do
|
||||
get :edit if parent_resource.actions.include?(:edit)
|
||||
get :show if parent_resource.actions.include?(:show)
|
||||
put :update if parent_resource.actions.include?(:update)
|
||||
delete :destroy if parent_resource.actions.include?(:destroy)
|
||||
get :edit if parent_resource.actions.include?(:edit)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -616,10 +616,10 @@ module ActionDispatch
|
|||
end if parent_resource.actions.include?(:new)
|
||||
|
||||
member_scope do
|
||||
get :edit if parent_resource.actions.include?(:edit)
|
||||
get :show if parent_resource.actions.include?(:show)
|
||||
put :update if parent_resource.actions.include?(:update)
|
||||
delete :destroy if parent_resource.actions.include?(:destroy)
|
||||
get :edit if parent_resource.actions.include?(:edit)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -413,6 +413,10 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
|
|||
end
|
||||
end
|
||||
|
||||
resources :sections, :id => /.+/ do
|
||||
get :preview, :on => :member
|
||||
end
|
||||
|
||||
match '/:locale/*file.:format', :to => 'files#show', :file => /path\/to\/existing\/file/
|
||||
end
|
||||
end
|
||||
|
@ -1946,6 +1950,18 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
|
|||
end
|
||||
end
|
||||
|
||||
def test_greedy_resource_id_regexp_doesnt_match_edit_and_custom_action
|
||||
with_test_routes do
|
||||
get '/sections/1/edit'
|
||||
assert_equal 'sections#edit', @response.body
|
||||
assert_equal '/sections/1/edit', edit_section_path(:id => '1')
|
||||
|
||||
get '/sections/1/preview'
|
||||
assert_equal 'sections#preview', @response.body
|
||||
assert_equal '/sections/1/preview', preview_section_path(:id => '1')
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def with_test_routes
|
||||
yield
|
||||
|
|
Loading…
Reference in a new issue