Ошибка в Rails / Wicked Gem, когда я go возвращаюсь и меняю форму ответа - PullRequest
0 голосов
/ 17 января 2020

ОБНОВЛЕНИЕ: Если вопрос «Вы женаты» и вопрос, который спрашивает пользователя об имени его супруга, не выполняются последовательно, все работает как должно. Только когда они находятся в последовательных шагах, когда есть проблема.

Я использую драгоценный камень Wicked в Ruby на Rails и пытаюсь динамически изменять порядок шагов в зависимости от выбранных условий в форме и сохранены в базе данных. Например, если пользователь отвечает «Да», что он женат, я хочу показать ему вопрос, спрашивая имя его супруга на следующем шаге формы. Это работает правильно при первом проходе мастера. Если я выберу «Да» и go на следующей странице формы, я увижу вопрос с просьбой назвать моего супруга.

Однако, если я использую кнопку «Назад» и затем изменяю свой ответ, чтобы сказать «Нет», что я не женат, а затем нажимаю «Далее», я получаю следующую ошибку:

Wicked::Wizard::InvalidStepError in UserStepsController#show
The requested step did not match any steps defined for this controller.

Вот соответствующий код из моего UserStepsController:

class UserStepsController < ApplicationController
include Wicked::Wizard
before_action :set_steps
before_action :setup_wizard

def show
    @user = current_user
    @family = current_user.families.first
    @family.children.build if @family.children.empty?
    render_wizard
end

def update
    @family = current_user.families.first
    @family.update_attributes(family_params)
    render_wizard @family
end


private

def set_steps
    self.steps = [:name, :married, :children]
    if current_user.families.first.married?
        self.steps.insert(2, 'spouse')
    end
end

def family_params
    params.require(:family).permit(:full_name, :married, :spouse_name, :children_attributes => [:id, :full_name, :_destroy])
end

end

Мне кажется, я правильно следую документации 1016 * в Dynami c Step Names. Буду признателен за любые указания, если я сделаю ошибку или есть лучший способ выполнить sh то, что я пытаюсь сделать.

...