3

id aiment faire une forme en plusieurs étapes avec des rails en utilisant les actions edit et update. donc je voudrais que ce soit comme step 1 du formulaire, et l'utilisateur remplit son nom, adresse et numéro de téléphone. L'utilisateur clique alors sur save and continue et remplit alors son adresse de livraison, puis clique sur save and continue et remplit son adresse de facturation. J'ai vu la version de Ryan Bates, mais ce n'est pas ce que je cherche. Je voudrais que la commande soit sauvegardée après la première étape, donc si l'utilisateur ne finit pas son formulaire, je peux l'appeler et lui demander ce qui s'est mal passé. quelqu'un peut-il me référer à un tutoriel ou me donner un exemple de la façon de faire un formulaire de commande en utilisant les méthodes edit et update?rails forme multi-forme

Répondre

6

Généralement, cela signifie que vous devrez mettre des conditions sur les validations de votre modèle. Certains sous-ensemble de validateurs doit appliquer à chaque page de formulaire:

class User 
    validates_presence_of :first_name 
    validates_presence_of :last_name 
    validates_presence_of :street,  :if => :on_page_two? 
    validates_presence_of :city,  :if => :on_page_two? 
    validates_presence_of :postal_code, :if => :on_page_two? 
    validates_presence_of :state,  :if => :on_page_two? 
    validates_presence_of :country,  :if => :on_page_two? 
    validates_acceptance_of :terms_and_conditions, :if => :on_page_three? 

    def on_page_two? 
    # whatever you need to determine the page number 
    end 

    def on_page_three? 
    # whatever you need to determine the page number 
    end 
end 

Ce n'est pas jolie, mais je recommande fortement un modèle comme celui-ci. Quelque chose de plus compliqué et vous devrez le réécrire lorsque votre flux d'inscription change.

0

Il existe différentes approches à ce problème.

Ma solution préférée particulière consiste à implémenter quelque chose comme une «machine d'état» dans le modèle. De cette façon, je peux persister la progression d'un, par exemple, une forme multi-étapes, sans avoir à se contenter de plus d'actions que new/create et edit/update.

Je travaille actuellement sur une application de machine d'état longue lourde en utilisant la gemme State Machine pour les rails.

J'espère que cela vous aidera!

0

Il existe un excellent Railcast sur la création de formulaires d'assistant multi-étapes, que vous pouvez trouver here. Il utilise la gemme Wicked.