Создание многостраничного аккаунта - PullRequest
0 голосов
/ 17 декабря 2009

Я пытаюсь создать страницу регистрации пользователя, которая будет занимать три страницы и создать две записи: объект пользователя и объект заявки:

  • первый (индекс) собирает только одно суммарное поле проблемы.
  • второй (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 в зависимости от того, была ли сохранена информация?

1 Ответ

0 голосов
/ 17 декабря 2009

Вместо сохранения в БД с каждым промежуточным шагом сохраняйте опубликованную информацию в сеансе.

def signup_a
   session[:ticket] = params[:ticket]
end 

Затем, когда вы дойдете до конца, вы можете извлечь эти данные из сеанса для передачи конструкторам объектов.

def submit_ticket #Saves info
  @ticket = Ticket.new(session[:ticket])
  @ticket.save!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...