Question

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 de redirection vers une page « merci ». Si la sauvegarde ne réussit pas, il redirige vers la page où le formulaire est intégré. Je voudrais être en mesure de montrer les erreurs de validation en ligne sur la page du formulaire, mais après le retour de redirection vers cette page, l'objet d'erreurs VIENT vide Retour.

Qu'est-ce que je peux le faire, je peux 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 pour la page du formulaire est, et je ne peux donc pas render la vue

Était-ce utile?

La solution

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

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

Autres conseils

Pourquoi ne pas:

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

au lieu du redirect_to :back?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top