как создавать формы мастера в ruby ​​на рельсах - PullRequest
18 голосов
/ 09 апреля 2010

Я пытаюсь понять, как лучше всего сделать магическую форму в ruby ​​на рельсах. В идеале, я бы хотел, чтобы у приложения была кнопка «Назад» и «Далее», которая позволяет пользователю отправлять данные поэтапно.

Таким образом, на шаге 1 они могли заполнить контактную информацию. Как только они это сделают, они могут нажать «Далее» и перейти к шагу 2, чтобы заполнить платежную информацию и т. Д. Если они допустят ошибку, они могут нажать кнопку назад и исправить ее. Некоторые шаги потребуются, а другие - нет, но вам нужно сделать последний шаг, чтобы отправить данные в базу данных, чтобы зарегистрироваться. Затем они должны иметь возможность вернуться и заполнить прошлые шаги таким же образом после завершения. (пример: возможно, если бы они нажали на ссылку профиля, они могли бы повторить шаги таким же образом, потому что они не хотели выполнять все шаги сразу. Может быть, получив кнопку пропуска, прежде чем они выполнили шаги, чтобы зарегистрироваться? ). Мне также нужно проверить, какие шаги были выполнены, чтобы они не могли перейти к следующему шагу, пока они не будут исправлены или завершены.

Вариант 1) Я заметил, что ajax был рекомендован в качестве опции в других вопросах по stackoverflow. Единственная проблема, с которой я сталкиваюсь, заключается в том, что пользователь не сможет зарегистрироваться, если JavaScript отключен. В идеале я хотел бы, чтобы он был родным для ruby ​​на рельсах, но я готов работать со всем необходимым, чтобы заставить его работать.

Ответы [ 5 ]

16 голосов
/ 19 ноября 2010

Вы должны посмотреть этот эпизод ролей на многоступенчатых формах:

http://railscasts.com/episodes/217-multistep-forms

Будьте готовы перемотать и посмотреть снова. Он очень быстрый!

15 голосов
/ 09 апреля 2010

Есть пара плагинов , которые обеспечивают упрощение конструкции wizzard в рельсах.
Действует как Волшебник и Волшебник кажутся самыми популярными. Основная идея заключается в следующем:
* создать модель на первом этапе
* затем отредактируйте его на последующих шагах,
* применение частичной проверки на каждом шаге и
* иметь модель для реализации своего рода конечного автомата.

6 голосов
/ 12 июня 2012

Злой выглядит многообещающе для рельсов 3:

https://github.com/schneems/wicked

4 голосов
/ 08 февраля 2013

Взгляните на злой , объясненный в этом ролике: http://railscasts.com/episodes/346-wizard-forms-with-wicked?autoplay=true

3 голосов
/ 02 апреля 2013

Альтернативный подход, особенно для более простых многошаговых форм, состоит в том, чтобы просто показать или скрыть части одной формы в зависимости от шага, чтобы вы не обращались к базе данных на каждом шаге, а позволяли пользователю создавать свои объект, пока он не будет готов с действительным экземпляром.

Такой подход настоятельно рекомендует использовать класс формы вместо непосредственной работы с моделью (http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/), и вам нужно немного настроить отображение ошибок.

Плюсы: только одно попадание в дб, нет проблем с сохраняющимися недопустимыми экземплярами (не пустые столбцы, проверка исправности before_save для испорченных атрибутов), ад обратного вызова не существует

Минусы: больше html-сообщений отправлено пользователю, настройка сообщений об ошибках, требуется хорошо построенный класс форм, чтобы быть элегантным и действительно полезным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...