Злой волшебник не устанавливает current_step на первом шаге - PullRequest
0 голосов
/ 06 апреля 2019

Я использую Wicked gem для пошагового построения профиля кандидата (мастер) и Разработка для авторизации.

Сначала кандидат должен зарегистрироваться с минимальной информацией (имя, фамилия, адрес электронной почты, пароль). (это форма разработки)

Класс-кандидат должен проверить эти поля. После этого кандидат регистрируется и должен создать свой профиль. (перенаправлено на первый шаг, в данном примере образование)

Итак, кандидат переходит на первый этап образования. Current_step имеет значение nil , и я проверяю поля для шага обучения. Что-то вроде:

cattr_accessor :form_steps do
    %w(education job_preferences employment_preferences work_experiences final_facts)
end

attr_accessor :current_step

validates :email, :first_name, :last_name, presence: true, if: -> { current_step? }
validates :academic_degree_name, presence: true, if: -> { current_step?(:education) }

def current_step?(step = nil)
   current_step.blank? || current_step == step
end

Контроллер мастера:

class ProfileBuildController < ApplicationController
include Wicked::Wizard

before_action :set_candidate, only: [:show, :update]

steps *Candidate.form_steps

def show
  render_step(params[:id])
end

def update
  @candidate.update(candidate_params(step))
  render_wizard @candidate
end

private

def redirect_to_finish_wizard(options = nil)
  redirect_to root_url, notice: "Thank you for signing up."
end

def set_candidate
  @candidate = current_candidate
end

def candidate_params(step)
  permitted_attributes = case step
                         when "education"
                           [:graduation_date, :academic_degree_name, :qualification_other, :educational_institution]
                         when "job_preferences"
                           [:job_preferences, :available_start_date]
                         when "employment_preferences"
                           [:employment_preferences]
                         when "work_experiences"
                           [:employment_preferences]
                         when "final_facts"
                           [:employment_preferences]
                         end
  params.require(:candidate).permit(permitted_attributes).merge(current_step: step)
end

конец

После перенаправления на первый шаг current_step равен nil, поэтому мои проверки не работают должным образом. Помощь

...