Итак, я пытаюсь создать мастер для моих пользователей при регистрации.
Я не могу использовать JavaScript (то, что я нашел, является общим решением для такого рода форм.)
Причина в том, что каждая страница в моем мастере сильно зависит от Javascript, что означает, что загрузка всего за один раз займет много времени.
И, о, волшебник имеет дело с 3 различными ресурсами.
Я пробовал один из подходов, на котором я сейчас застрял, и, честно говоря, он не чувствует себя правильным.
(SIDENOTE: пользователь получает камень с приличной экспозицией)
Это мой мастер-контроллер:
def index
case current_step
when 'description'
render 'users/edit'
when 'contact'
render 'contact_informations/edit'
when 'location'
render 'location/edit'
end
end
def current_step
@current_step || STEPS.first
end
def next_step
@current_step = STEPS[STEPS.index(current_step)+1]
index
end
def previous_step
@current_step = STEPS[STEPS.index(current_step)-1]
index
end
def final_step
@current_step == STEPS.last
end
Тогда у меня есть одно действие обновления для каждого из ресурсов (это тот же мастер-контроллер)
def update_description
if user.update_attributes(params[:user])
next_step
else
redirect_to user_wizard_path(user)
end
end
def update_contact_information
# Do stuff here
end
def update_location
# Do stuff here
end
Кажется, что есть проблема с вызовом действий из одного контроллера.
И на основании того, что я никогда не видел, чтобы это было сделано раньше, это кажется неправильным.
Что я пытаюсь сделать простым:
Я не хочу загромождать оригинальные REST-контроллеры ресурсов.
Я хочу, чтобы каждый шаг был подтвержден
Если происходит сбой update_attributes, перерисовать форму с ошибками.
Если атрибут update_attributes успешен, выполните следующий шаг.
Я пришел к выводу, что мой выстрел в это не сработает, и я не чувствую, что это «рельсовый путь» в выполнении вещей.
Я наблюдал, как Райан Бейтс транслировал «многоэтапные формы», но даже после этого я не могу этого понять.
Заранее спасибо.
Тим