From 0f11c8c63344193f71b5e57a6fab03203e719cec Mon Sep 17 00:00:00 2001 From: John Pinto Date: Mon, 13 Sep 2021 12:22:37 +0100 Subject: [PATCH] Issue #584 - Fix for "Not possible to add funder once the creation plan wizard page is completed" Changes: - In plans_controller.rb: save funder selected in - added funders to show() method for the use by the partial "shared/org_selectors/local_only" in _project_details.html.erb - update() method changed to receive params for funder - In _project_details.html.erb added "shared/org_selectors/local_only" for funders. --- app/controllers/plans_controller.rb | 12 ++++++++++-- app/views/plans/_project_details.html.erb | 20 ++++++++++---------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/app/controllers/plans_controller.rb b/app/controllers/plans_controller.rb index 53874b74fc..6cc21c7a0f 100644 --- a/app/controllers/plans_controller.rb +++ b/app/controllers/plans_controller.rb @@ -171,7 +171,11 @@ def show else Rails.configuration.x.plans.default_visibility end - + # Get all of the available funders + @funders = Org.funder + .includes(identifiers: :identifier_scheme) + .joins(:templates) + .where(templates: { published: true }).uniq.sort_by(&:name) # TODO: Seems strange to do this. Why are we just not using an `edit` route? @editing = (!params[:editing].nil? && @plan.administerable_by?(current_user.id)) @@ -261,8 +265,12 @@ def update # TODO: For some reason the `fields_for` isn't adding the # appropriate namespace, so org_id represents our funder - funder = org_from_params(params_in: attrs, allow_create: true) + funder_attrs = plan_params[:funder] + funder_attrs[:org_id] = plan_params[:funder][:id] + funder = org_from_params(params_in: funder_attrs, allow_create: true) @plan.funder_id = funder&.id + attrs.delete(:funder) + process_grant(grant_params: plan_params[:grant]) attrs.delete(:grant) attrs = remove_org_selection_params(params_in: attrs) diff --git a/app/views/plans/_project_details.html.erb b/app/views/plans/_project_details.html.erb index eba8192601..e3cd180180 100644 --- a/app/views/plans/_project_details.html.erb +++ b/app/views/plans/_project_details.html.erb @@ -141,16 +141,16 @@ ethics_report_tooltip = _("Link to a protocol from a meeting with an ethics comm
- <%= fields_for :funder, plan.funder do |funder_fields| %> - <%= render partial: org_partial, - locals: { - form: form, - orgs: orgs, - funder_only: true, - label: _("Funder"), - default_org: plan.funder, - required: false - } %> + <%= form.fields_for :funder, Org.new do |funder_fields| %> + <%= render partial: "shared/org_selectors/local_only", + locals: { + form: funder_fields, + id_field: :id, + label: _("Funder"), + default_org: plan.funder, + orgs: @funders, + required: false + } %> <% end %>