1
0
Fork 0
discourse-custom-wizard-unl.../controllers/custom_wizard/steps.rb
2020-04-15 00:10:26 +10:00

32 Zeilen
1 KiB
Ruby

class CustomWizard::StepsController < ::ApplicationController
before_action :ensure_logged_in
def update
params.require(:step_id)
params.require(:wizard_id)
field_ids = CustomWizard::Wizard.field_ids(params[:wizard_id], params[:step_id])
permitted = params.permit(:wizard_id, :step_id)
if params[:fields]
permitted[:fields] = params[:fields].select { |k, v| field_ids.include? k }
permitted.permit!
end
wizard = CustomWizard::Builder.new(permitted[:wizard_id].underscore, current_user).build
updater = wizard.create_updater(permitted[:step_id], permitted[:fields])
updater.update
if updater.success?
result = success_json
result.merge!(updater.result) if updater.result
result[:refresh_required] = true if updater.refresh_required?
render json: result
else
errors = []
updater.errors.messages.each do |field, msg|
errors << { field: field, description: msg.join(',') }
end
render json: { errors: errors }, status: 422
end
end
end