mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Router accepts member routes on resource. [#4624 state:resolved]
This commit is contained in:
committed by
Jeremy Kemper
parent
83729e2fe3
commit
ac9f8e1b7b
@@ -622,13 +622,22 @@ module ActionDispatch
|
||||
end
|
||||
|
||||
def member
|
||||
unless @scope[:scope_level] == :resources
|
||||
raise ArgumentError, "can't use member outside resources scope"
|
||||
unless [:resources, :resource].include?(@scope[:scope_level])
|
||||
raise ArgumentError, "You can't use member action outside resources and resource scope."
|
||||
end
|
||||
|
||||
with_scope_level(:member) do
|
||||
scope(':id', :name_prefix => parent_resource.member_name, :as => "") do
|
||||
yield
|
||||
case @scope[:scope_level]
|
||||
when :resources
|
||||
with_scope_level(:member) do
|
||||
scope(':id', :name_prefix => parent_resource.member_name, :as => "") do
|
||||
yield
|
||||
end
|
||||
end
|
||||
when :resource
|
||||
with_scope_level(:member) do
|
||||
scope(':id', :as => "") do
|
||||
yield
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -28,6 +28,10 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
|
||||
post :reset
|
||||
|
||||
resource :info
|
||||
|
||||
member do
|
||||
get :crush
|
||||
end
|
||||
end
|
||||
|
||||
match 'account/logout' => redirect("/logout"), :as => :logout_redirect
|
||||
@@ -352,6 +356,15 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
|
||||
end
|
||||
end
|
||||
|
||||
def test_member_on_resource
|
||||
with_test_routes do
|
||||
get '/session/1/crush'
|
||||
assert_equal 'sessions#crush', @response.body
|
||||
|
||||
assert_equal '/session/1/crush', crush_session_path(1)
|
||||
end
|
||||
end
|
||||
|
||||
def test_redirect_modulo
|
||||
with_test_routes do
|
||||
get '/account/modulo/name'
|
||||
|
||||
Reference in New Issue
Block a user