steps.rb 906 B

12345678910111213141516171819202122232425
  1. class CustomWizard::StepsController < ApplicationController
  2. before_action :ensure_logged_in
  3. def update
  4. field_ids = CustomWizard::Wizard.field_ids(params[:wizard_id], params[:step_id])
  5. permitted = params.permit(:step_id, :wizard_id, fields: field_ids.map(&:to_sym)) if field_ids.present?
  6. wizard = CustomWizard::Builder.new(current_user, permitted[:wizard_id].underscore).build
  7. updater = wizard.create_updater(permitted[:step_id], permitted[:fields])
  8. updater.update
  9. if updater.success?
  10. result = success_json
  11. result.merge!(updater.result) if updater.result
  12. result[:refresh_required] = true if updater.refresh_required?
  13. render json: result
  14. else
  15. errors = []
  16. updater.errors.messages.each do |field, msg|
  17. errors << { field: field, description: msg.join }
  18. end
  19. render json: { errors: errors }, status: 422
  20. end
  21. end
  22. end