2010-04-08 20 views
18

Estoy tratando de entender las mejores opciones para obtener una forma de asistente en ruby ​​on rails. Idealmente, me gustaría tenerlo para que el registro de la aplicación tenga un botón de retroceso y el siguiente que permita al usuario enviar los datos en pasos.cómo crear formularios de asistente en ruby ​​on rails

De modo que en el paso 1 podrían completar la información de contacto. Una vez que terminen, pueden hacer clic en siguiente y estar en el paso 2 para completar la información de pago, etc. Si se equivocan, pueden hacer clic atrás y corregirlo. Se necesitarán algunos pasos, mientras que otros no, pero debe llegar al último paso para enviar los datos a la base de datos para registrarse. Luego necesitan la capacidad de regresar y completar los pasos pasados ​​de la misma manera después de la finalización. (Ejemplo: quizás, si hacían clic en un enlace de perfil, podían volver a compilar los pasos de la misma manera porque no deseaban completar todos los pasos de inmediato). ¿Tal vez recibir un botón de omisión antes de completar los pasos para registrarse?) También necesito la validación de los pasos que se han completado para evitar que pasen al siguiente paso hasta que se corrijan o se completen.

Opción 1) He notado que ajax ha sido recomendado como una opción en otras preguntas en stackoverflow. El único problema que tengo es que el usuario no podría registrarse si javascript estaba deshabilitado. Lo ideal es que sea nativo de ruby ​​on rails, pero estoy dispuesto a trabajar con lo que sea necesario para que funcione.

Respuesta

15

Hay un par de plugins que proporcionan facilitación de construcción de wizzard en rieles.
Acts as Wizard y Wizardly parecen ser los más populares.
La idea principal es:
* Crear un modelo en el primer paso
* luego editarlo en pasos posteriores,
* aplicar la validación parciales en cada paso y
* que tiene el modelo de implementar algún tipo de máquina de estados .

+1

Gracias, definitivamente daré una oportunidad. –

+0

Este es un buen método (especialmente cuando se trata de cargas de archivos), pero ninguna de esas gemas funciona con Rails 3. ¿Hay otras disponibles? –

+0

No sé, tal vez trate de portar uno, no debería ser difícil, o haga uno propio, la técnica es una fruta bastante baja. – clyfe

16

Usted debe ver este episodio carriles de yeso en forma de múltiples pasos:

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

Estar preparado para rebobinar y ver de nuevo. ¡Él es muy rápido!

+0

Gracias por la recomendación. De hecho, soy un observador frecuente de los moldes de Ryan y me encontré con esto por mi cuenta también. Gracias de todos modos. –

3

Un enfoque alternativo, para las formas más simples de pasos múltiples en especial, es simplemente muestre y oculte partes de una sola forma según el paso, de esta manera no golpea la base de datos en cada paso, sino que permite que el usuario construya su objeto hasta que esté listo con una instancia válida.

Este enfoque favorece mucho el uso de una clase de formulario en lugar de trabajar con el modelo directamente (http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/) y necesita ajustar un poco la renderización de mensajes de error.

Pros: sólo un hit db, hay problemas con la persistencia de casos no válidos (no columnas nulas, before_save comprobaciones de validez de los atributos en mal estado), no hay devolución de llamada infierno

Contras: más HTML enviado al usuario, ajustes de mensajes de error, requiere una clase de formulario bien construida para ser elegante y realmente útil