ОБНОВЛЕНИЕ: Если вопрос «Вы женаты» и вопрос, который спрашивает пользователя об имени его супруга, не выполняются последовательно, все работает как должно. Только когда они находятся в последовательных шагах, когда есть проблема.
Я использую драгоценный камень 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 то, что я пытаюсь сделать.