11# frozen_string_literal: true
22
33class CampaignsController < ApplicationController
4- before_action :set_repository , only : %i[ new create edit ]
4+ before_action :set_repository , only : %i[ new create edit update ]
55 before_action :check_repository_ownership! , only : %i[ new create edit ]
66 before_action :set_campaign , only : %i[ edit update ]
77
@@ -61,19 +61,23 @@ def edit
6161 end
6262
6363 def update
64- params [ :campaign ] [ :accepted_currencies ] = [ params [ :campaign ] [ :accepted_currencies ] ] if params [ :campaign ] [ :accepted_currencies ] . is_a? ( String )
65-
66- existing_currencies = @campaign . accepted_currencies || [ ]
67- params [ :campaign ] [ :accepted_currencies ] . each do |currency |
68- existing_currencies << currency unless existing_currencies . include? ( currency )
69- end
70-
71- @campaign . accepted_currencies = existing_currencies
72-
73- if @campaign . update ( campaign_params )
74- redirect_to user_repository_campaign_path ( @repository . user , @repository , @campaign ) , notice : 'Campaign updated successfully!'
75- else
76- render :edit
64+ def update
65+ currencies_param = params [ :campaign ] [ :accepted_currencies ]
66+ currencies_param = [ currencies_param ] if currencies_param . is_a? ( String )
67+
68+ existing_currencies = @campaign . accepted_currencies || [ ]
69+
70+ currencies_param . each do |currency |
71+ existing_currencies << currency unless existing_currencies . include? ( currency )
72+ end
73+
74+ @campaign . accepted_currencies = existing_currencies
75+
76+ if @campaign . save
77+ redirect_to user_repository_campaign_path ( @repository . user , @repository , @campaign ) , notice : 'Campaign updated successfully!'
78+ else
79+ render :edit
80+ end
7781 end
7882 end
7983
@@ -84,16 +88,18 @@ def set_campaign
8488 end
8589
8690 def set_repository
87- @repository =
88- if action_name == 'new' || action_name == 'create' || !@campaign
89- current_user . repositories . find ( params [ :repository_id ] )
90- else
91- @campaign . repository
91+ if action_name == 'new' || action_name == 'create'
92+ @repository = current_user . repositories . find ( params [ :repository_id ] )
93+ else
94+ @campaign = Campaign . find_by ( id : params [ :id ] )
95+ if @campaign . nil?
96+ redirect_to root_path , alert : "Campaign not found with id: #{ params [ :id ] } ."
97+ return
9298 end
99+ end
93100
94- Rails . logger . debug "Repository set in #{ action_name } action: #{ @repository . inspect } "
95- @campaign = Campaign . find_by ( id : params [ :id ] )
96- redirect_to root_path , alert : "Campaign not found with id: #{ params [ :id ] } ." unless @campaign
101+ @repository = @campaign . repository
102+ Rails . logger . debug "Repository set in #{ action_name } action: #{ @repository . inspect } "
97103 end
98104
99105 # def set_repository
0 commit comments