злой волшебник заставляет сделать конкретный шаг

В приложении rails я использую wicked gem для создания мастера (https://github.com/schneems/wicked/)

Я хочу защитить своего мастера и отображать только конкретный шаг после проверки.

На самом деле метод render_wizard может принимать только экземпляр:

render_wizard @product

Возможно ли как-то отображать только разрешенный шаг в действии шоу? Мне нужно что-то вроде:

if params[:id] == @my_request_model.current_state
  render_wizard
else
  render_wizard @my_request_model.current_state

Перенаправление сюда не является хорошей идеей, потому что действие обновления уже вызывает перенаправление.


person Vladimir    schedule 06.02.2014    source источник


Ответы (1)


Хм, вы пытаетесь добавить проверки в свою форму для каждого шага мастера? Если это так, вы можете сделать следующее:

В вашей модели

validate :foo if step_1
validate :bar if step_2

def step_1
  form_progress == 1
end

def step_2
  form_progress == 2
end

Добавьте миграцию, чтобы добавить столбец form_progress в вашу модель.

В форме каждого шага добавьте hidden_field вместо form_progress и установите значение на номер этого шага.

f.hidden_field :form_progress, value: 1

Таким образом, пользователь может перейти к следующему шагу только в том случае, если он пройдет проверку.

person miahabdu    schedule 06.02.2014