2010-04-08 11 views
18

J'essaie de comprendre les meilleures options pour sortir un formulaire de sorcier en rubis sur rails. Idéalement, je voudrais l'avoir pour que l'inscription de l'application dispose d'un bouton Précédent et Suivant qui permet à l'utilisateur de soumettre des données par étapes. Donc, à l'étape 1, ils pourraient remplir les informations de contact.comment créer des formes magiques en rubis sur rails

Une fois qu'ils ont terminé, ils peuvent cliquer sur Suivant et être à l'étape 2 pour remplir les informations de paiement, etc. S'ils commettent une erreur, ils peuvent cliquer et revenir en arrière. Certaines étapes seront nécessaires, tandis que d'autres ne le seront pas, mais vous devrez passer à la dernière étape pour soumettre les données à la base de données afin de vous inscrire. Ils ont ensuite besoin de la capacité de revenir en arrière et de remplir les étapes précédentes de la même manière après l'achèvement. (exemple: peut-être s'ils cliquaient sur un lien de profil, ils pourraient refaire les étapes de la même manière parce qu'ils ne voulaient pas terminer toutes les étapes tout de suite.) Peut-être en recevant un bouton de saut avant de s'inscrire?). J'ai également besoin d'une validation pour savoir quelles étapes ont été accomplies, les empêchant de passer à l'étape suivante jusqu'à ce qu'elles soient corrigées ou complétées.

Option 1) J'ai remarqué que l'ajax a été recommandé comme option dans d'autres questions sur stackoverflow. Le seul problème que j'ai avec cela est que l'utilisateur ne serait pas capable de s'inscrire si javascript était désactivé. Idéalement, je voudrais qu'il soit indigène à rubis sur rails mais je suis prêt à travailler avec tout ce qui est nécessaire pour le faire fonctionner.

Répondre

15

Il y a quelques plugins qui fournissent la facilitation de construction de wizzard dans des rails.
Acts as Wizard et Wizardly semblent les plus populaires.
L'idée principale est de:
* créer un modèle dans la première étape
* puis le modifier sur les étapes suivantes,
* application validation partielle sur chaque étape et
* ayant le modèle mettre en œuvre une sorte de machine d'état .

+1

Merci, je vais certainement donner à ceux-ci un coup de feu. –

+0

C'est une bonne méthode (surtout quand il s'agit de télécharger des fichiers), mais aucune de ces gemmes ne fonctionne avec Rails 3. Y en a-t-il d'autres disponibles? –

+0

Je ne sais pas, peut-être essayer d'en mettre un, il ne devrait pas être difficile, ou faire votre propre, la technique est un fruit assez bas. – clyfe

16

Vous devriez regarder ce rails épisode coulé sur les formes de plusieurs étapes:

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

Soyez prêt à revenir en arrière et regarder à nouveau. Il est très rapide!

+0

Merci pour la recommandation. En fait, je suis un observateur fréquent des moulages de Ryan et je suis tombé moi-même dessus. Merci quand même. –

3

Une autre approche, des formes de plusieurs étapes simples en particulier, est de il suffit d'afficher - masquer les parties d'une seule forme en fonction de l'étape, de cette façon vous ne frappez pas la base de données à chaque étape mais laissez l'utilisateur construire son objet jusqu'à ce qu'il soit prêt avec une instance valide.

Une telle approche favorise fortement l'utilisation d'une classe de formulaire au lieu de travailler directement avec le modèle (http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/) et vous devez modifier le message d'erreur en affichant un bit.

Plus: un seul succès db, pas de problème avec la persistance des cas invalides (pas de colonnes nulles, before_save contrôles de santé d'esprit pour les attributs foiré), pas d'enfer de rappel

Inconvénients: plus html envoyé à l'utilisateur, quelques réglages de message d'erreur, nécessite une classe de forme bien construite pour être élégante et vraiment utile

Questions connexes