рельсы многоступенчатая форма - PullRequest
3 голосов
/ 24 октября 2011

я хотел бы создать многошаговую форму с рельсами, используя действия edit и update. поэтому я хотел бы, чтобы он был похож на step 1 формы, и пользователь заполняет свое имя, адрес и номер телефона. затем пользователь нажимает save and continue, затем заполняет свой адрес доставки, затем нажимает save and continue и заполняет свой платежный адрес. Я видел версию Райана Бейтса, но это не то, что я ищу. Я хотел бы, чтобы заказ был сохранен после первого шага, поэтому, если пользователь не заканчивает свою форму, я могу позвонить ему и спросить, что пошло не так. Кто-нибудь может отослать меня к учебнику или дать пример того, как сделать форму заказа, используя методы edit и update?

Ответы [ 3 ]

6 голосов
/ 24 октября 2011

Как правило, это означает, что вам нужно будет поставить условия для проверки вашей модели. Некоторое подмножество ваших проверок должно применяться к каждой странице формы:

class User
  validates_presence_of :first_name
  validates_presence_of :last_name
  validates_presence_of :street,      :if => :on_page_two?
  validates_presence_of :city,        :if => :on_page_two?
  validates_presence_of :postal_code, :if => :on_page_two?
  validates_presence_of :state,       :if => :on_page_two?
  validates_presence_of :country,     :if => :on_page_two?
  validates_acceptance_of :terms_and_conditions, :if => :on_page_three?

  def on_page_two?
    # whatever you need to determine the page number
  end

  def on_page_three?
    # whatever you need to determine the page number
  end
end

Это не красиво, но я очень рекомендую такой шаблон. Что-нибудь более сложное, и вам нужно будет переписать его, когда ваш поток регистрации изменится.

0 голосов
/ 20 августа 2013

Существует отличный Railcast для создания многошаговых форм мастера, который вы можете найти здесь .Он использует драгоценный камень Зла.

0 голосов
/ 28 октября 2011

Существуют разные подходы к этой проблеме.

Мое особое предпочтительное решение состоит в том, чтобы внедрить что-то вроде "конечного автомата" в модель.Таким образом, я могу сохранить прогресс, например, многоэтапной формы, без необходимости выполнять больше действий, чем new / create и edit / update.

В настоящее время я работаю над тяжелым длинным состояниемМашинное применение, используя State Machine самоцвет для рельсов.

Надеюсь, это поможет вам!

...