Я советую, что я думаю, что две формы для подобной ситуации неоправданно сложны, если только нет какого-то особого императива для приложения, чтобы отделить захват имени пользователя / пароля и проверку CAPTCHA.
Вы вероятно правыбеспокоиться об использовании сеанса для хранения промежуточных данных, но если вы действительно хотите пойти по этому пути, есть отличный скринкаст, демонстрирующий технику для аналогичного приложения здесь .
Лично я бы пошелмаршрут Javascript.Загрузите обе формы одновременно, шаг 1 виден, а шаг 2 скрыт.Подтвердите шаг 1 с помощью вызова AJAX на сервере (если вам это нужно) или на стороне клиента, если вы этого не сделаете.Если шаг 1 действителен, тогда откройте форму шага 2 (и при желании скройте форму шага 1, если хотите).
ОБНОВЛЕНИЕ: Добавление дополнительной информации по запросу спрашивающего
Существует множество способовскрывать и показывать содержимое страницы, но общий подход заключается в том, чтобы обернуть его в блок <div>
, помеченный как скрытый, с использованием CSS, а затем использовать некоторый Javascript (например, JQuery), чтобы переключить его на скрытый или скрытый.Например:
<div id="step2" style="display:none">
<% form_for .... %>
<% end %>
</div>
При первой загрузке страницы форма будет скрыта.Затем в JQuery (например) выполните:
$(function() {
$('#step2').show();
});
, чтобы отобразить его.См. Документацию для show , hide и toggle для получения дополнительных примеров использования.