diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 347d469282b..f07820e9d23 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -70,7 +70,7 @@ class ProjectsController < ApplicationController
Projects::SetAttributesService
.new(user: current_user, model: @project, contract_class: EmptyContract)
- .call({})
+ .call(params.permit(:parent_id))
render layout: 'no_menu'
end
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index b7a8d51dd8f..95bff11f2eb 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -160,7 +160,7 @@ module ProjectsHelper
def project_more_menu_subproject_item(project)
if User.current.allowed_to? :add_subprojects, project
[t(:label_subproject_new),
- new_project_path(parent_id: project),
+ new_project_path(parent_id: project.id),
class: 'icon-context icon-add',
title: t(:label_subproject_new)]
end
diff --git a/app/views/project_settings/show.html.erb b/app/views/project_settings/show.html.erb
index b172b508d17..8dbdeaf395d 100644
--- a/app/views/project_settings/show.html.erb
+++ b/app/views/project_settings/show.html.erb
@@ -31,7 +31,7 @@ See docs/COPYRIGHT.rdoc for more details.
<%= toolbar title: l(:label_project_settings) do %>
<% if User.current.allowed_to?(:add_subprojects, @project) %>
- <%= link_to new_project_path(parent_id: @project),
+ <%= link_to new_project_path(parent_id: @project.id),
{ class: 'button -alt-highlight',
aria: {label: t(:label_subproject_new)},
title: t(:label_subproject_new)} do %>
diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb
index 4aa0a88d874..59291d4aaab 100644
--- a/spec/controllers/projects_controller_spec.rb
+++ b/spec/controllers/projects_controller_spec.rb
@@ -49,6 +49,17 @@ describe ProjectsController, type: :controller do
expect(response).to be_successful
expect(response).to render_template 'new'
end
+
+ context 'with parent project' do
+ let!(:parent) { FactoryBot.create :project, name: 'Parent' }
+
+ it 'sets the parent of the project' do
+ get 'new', params: { parent_id: parent.id }
+ expect(response).to be_successful
+ expect(response).to render_template 'new'
+ expect(assigns(:project).parent).to eq parent
+ end
+ end
end
describe 'index.html' do
diff --git a/spec_legacy/functional/projects_controller_spec.rb b/spec_legacy/functional/projects_controller_spec.rb
index 0d3dfaa036a..78bbb92e533 100644
--- a/spec_legacy/functional/projects_controller_spec.rb
+++ b/spec_legacy/functional/projects_controller_spec.rb
@@ -65,7 +65,8 @@ describe ProjectsController, type: :controller do
end
it 'should accept get' do
- get :new, params: { parent_id: 'ecookbook' }
+ project = Project.find_by(identifier: 'ecookbook')
+ get :new, params: { parent_id: project.id }
assert_response :success
assert_template 'new'
# parent project selected