2011-05-02 4 views
1

Я создаю мастер формы, который направляет пользователя через форму, которая уже создана и развернута. Модель и контроллер должны оставаться неизменными, так как единственное изменение - просмотр (направление пользователя через каждое поле формы). Каков наилучший (и самый простой, если возможно) способ решения этой задачи?Rails - та же модель/контроллер, но другой вид

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

Любые предложения действительно оценены. Благодаря!

ответ

2

После выполнения некоторых исследований, я понял, несколько способов выполнить свою задачу:

  • Простым способом является создание действия мастера в контроллере формы. Попросите действия мастера визуализировать представление мастера.
  • Лучшим способом является создание контроллера мастера и его подкласс контроллера формы. Отмените новое действие и отрисуйте представление мастера. Это более предпочтительный метод, потому что основные действия CRUD в Rails бесплатно получают REST. Таким образом, после этого метода будет создан мастер RESTful.
2

Вы обязательно должны посмотреть здесь:

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

В противном случае, чтобы ответить коротко, вы можете сказать, любое действие контроллера для отображения ау вида вы want.That то, что делается в основном контроллере эшафота:

render :edit 
+0

@apneadiving Вместо подкласса исходного контроллера (назовем его контроллером формы) я мог бы просто создать контроллер FormWizard, который подклассифицирует ApplicationController. Оттуда я могу указать, какие действия я хочу иметь в FormWizard, причем каждое действие может отображать определенное представление. Это хороший подход? Как связать новый контроллер/представления с моделью Form? – webren

+0

@apneadiving Что касается связывания контроллера FormWizard и представлений с моделью Form, я бы подумал, что это так же просто, как создать переменную экземпляра в контроллере FormWizard и заставить ее выталкивать и передавать данные через Active Record. – webren

+0

Это способ, но я не уверен, что это необходимо по двум причинам: 1) обычно мастера не сохраняют модель между двумя страницами, но только в конце формы, это их цель, и скринкаст демонстрирует ее с успехом 2) у волшебника должен быть только один url. В противном случае вы пишете многостраничную форму, которая тоже прекрасна :) – apneadiving

Смежные вопросы