2010-12-03 35 views
0

J'ai une forme que je construit en utilisant Formtastic dans Rails 3. La forme soumet à l'action #create de ClientsController, et si la sauvegarde est réussie, le contrôleur redirige vers une page « merci ». Si l'enregistrement échoue, il redirige vers la page sur laquelle le formulaire est incorporé. J'aimerais pouvoir afficher les erreurs de validation en ligne sur la page de formulaire, mais après la redirection vers cette page, l'objet d'erreurs revient vide.erreurs de validation de formulaire dans Rails 3

Que puis-je faire pour que je puisse afficher les erreurs de validation du formulaire?

Voici le code du contrôleur.

if client.save && event.save 
    redirect_to "/thank-you" 
else 
    redirect_to :back 
end 

Quelques détails supplémentaires: J'utilise RefineryCMS donc il n'y a pas de vue de la page où la forme est, et je ne peux donc pas render la vue.

Répondre

1

Vous devez enregistrer vos erreurs en session.


if client.save && event.save 
    session[:client_create_errors] = nil 
    redirect_to "/thank-you" 
else 
    session[:client_create_errors] = client.errors 
    redirect_to :back 
end 

maintenant, vous pouvez accéder à des erreurs objet de anywere en utilisant session[:client_create_errors]

1

Pourquoi ne pas:

render :action => 'name-of-the-view-the-form-is-in' 

au lieu du redirect_to :back?

+0

Désolé, je l'ai dit que j'utilise RefineryCMS, de sorte que les pages sont stockées dans la base de données. Il n'y a pas de vue pour la page. – picardo