12345678910111213141516171819202122232425 |
- class CustomWizard::StepsController < ApplicationController
- before_action :ensure_logged_in
- def update
- field_ids = CustomWizard::Wizard.field_ids(params[:wizard_id], params[:step_id])
- permitted = params.permit(:step_id, :wizard_id, fields: field_ids.map(&:to_sym)) if field_ids.present?
- wizard = CustomWizard::Builder.new(current_user, permitted[:wizard_id].underscore).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
|