Я пытаюсь создать страницу регистрации пользователя, которая будет занимать три страницы и создать две записи: объект пользователя и объект заявки:
- первый (индекс) собирает только одно суммарное поле проблемы.
- второй (signup_a) собирает подробное описание проблемы, автоматически заполняет сводку из предыдущего, несколько связанных деталей, которые будут указаны в объекте заявки, и имя / фамилия / электронная почта, которые будут указаны в объекте пользователя
- третий (signup_b) добавляет больше деталей к объекту пользователя, таким как адрес, город, штат и т. Д., Но никакие подробности не добавляются к объекту заявки, поэтому он может быть закрыт здесь.
- На последней странице (signup_c) отображаются все данные пользователя / заявки обратно клиенту и сохраняется после кнопки подтверждения.
В настоящее время у меня есть методы в одном контроллере (код упрощен без проверки ошибок или response_to):
def index # Collects summary
@ticket = Ticket.new
end
def signup_a # Basic Ticket Info/User name and email
@ticket = Ticket.new(params[:ticket])
@user = User.new
end
def signup_b # Address and other misc. pref's
@ticket = Ticket.new(params[:ticket])
@user = User.new(params[:user])
end
def signup_c #Display final results
@ticket = Ticket.new(params[:ticket])
@user = User.new(params[:user])
end
def submit_ticket #Saves info
@ticket = Ticket.new(params[:ticket])
@ticket.save!
@user = User.new(params[:user])
@user.save!
end
Проблема в том, что ... я не хочу сохранять информацию в БД на каждом этапе, только на последнем, но переменные с каждой страницы до этого, на которые нет явной ссылки на следующей странице, не отображаются прошло. Как мне продолжать добавлять объекты Ticket и User, чтобы информация оставалась до самой последней страницы, на которой я ее сохраню! ? Кроме того, когда я выполняю @ user.save! метод ... могу ли я по-прежнему вызывать отдельные атрибуты экземпляра или выполняет сохранение! превратить объект в значение true / false в зависимости от того, была ли сохранена информация?