fix for :shallow in router not generating helpers for create, update, and destroy actions when :only or :except are used
[#4900 state:committed] Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
This commit is contained in:
parent
a55d83292f
commit
9d3eeb9053
|
@ -536,6 +536,7 @@ module ActionDispatch
|
|||
def member_name
|
||||
name
|
||||
end
|
||||
alias_method :collection_name, :member_name
|
||||
|
||||
def nested_path
|
||||
path
|
||||
|
@ -874,9 +875,9 @@ module ActionDispatch
|
|||
shallow_prefix = @scope[:module].blank? ? "" : "#{@scope[:module].tr('/', '_')}_"
|
||||
|
||||
case action
|
||||
when :index
|
||||
when :index, :create
|
||||
"#{name_prefix}#{parent_resource.collection_name}"
|
||||
when :show
|
||||
when :show, :update, :destroy
|
||||
if parent_resource.shallow?
|
||||
"#{shallow_prefix}#{parent_resource.member_name}"
|
||||
else
|
||||
|
@ -890,8 +891,6 @@ module ActionDispatch
|
|||
end
|
||||
when :new
|
||||
"new_#{name_prefix}#{parent_resource.member_name}"
|
||||
when :update, :create, :destroy
|
||||
nil
|
||||
else
|
||||
case @scope[:scope_level]
|
||||
when :collection
|
||||
|
|
|
@ -142,6 +142,12 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
|
|||
resources :comments, :except => :destroy
|
||||
end
|
||||
|
||||
resource :past, :only => :destroy
|
||||
resource :present, :only => :update
|
||||
resource :future, :only => :create
|
||||
resources :relationships, :only => [:create, :destroy]
|
||||
resources :friendships, :only => [:update]
|
||||
|
||||
shallow do
|
||||
namespace :api do
|
||||
resources :teams do
|
||||
|
@ -729,6 +735,38 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
|
|||
end
|
||||
end
|
||||
|
||||
def test_resource_routes_only_create_update_destroy
|
||||
with_test_routes do
|
||||
delete '/past'
|
||||
assert_equal 'pasts#destroy', @response.body
|
||||
assert_equal '/past', past_path
|
||||
|
||||
put '/present'
|
||||
assert_equal 'presents#update', @response.body
|
||||
assert_equal '/present', present_path
|
||||
|
||||
post '/future'
|
||||
assert_equal 'futures#create', @response.body
|
||||
assert_equal '/future', future_path
|
||||
end
|
||||
end
|
||||
|
||||
def test_resources_routes_only_create_update_destroy
|
||||
with_test_routes do
|
||||
post '/relationships'
|
||||
assert_equal 'relationships#create', @response.body
|
||||
assert_equal '/relationships', relationships_path
|
||||
|
||||
delete '/relationships/1'
|
||||
assert_equal 'relationships#destroy', @response.body
|
||||
assert_equal '/relationships/1', relationship_path(1)
|
||||
|
||||
put '/friendships/1'
|
||||
assert_equal 'friendships#update', @response.body
|
||||
assert_equal '/friendships/1', friendship_path(1)
|
||||
end
|
||||
end
|
||||
|
||||
def test_resource_with_slugs_in_ids
|
||||
with_test_routes do
|
||||
get '/posts/rails-rocks'
|
||||
|
@ -843,7 +881,7 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
|
|||
assert_equal '/account/admin/subscription', account_admin_subscription_path
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def test_namespace_nested_in_resources
|
||||
with_test_routes do
|
||||
get '/clients/1/google/account'
|
||||
|
|
Loading…
Reference in New Issue