J'ai un modèle de base dans lequel j'ai spécifié certains des champs pour valider la présence de. dans la création action dans le contrôleur que je fais la norme:RoR: Création/Mise à jour: Affichage des erreurs de validation tout en préservant les valeurs précédentes
@obj = SomeObject.new(params[:some_obj])
if @obj.save
flash[:notice] = "ok"
redirect...
else
flash[:error] = @obj.errors.full_messages.collect { |msg| msg + "<br/>" }
redirect to new form
end
mais quand je réoriente à la nouvelle forme, les erreurs montrent, mais les champs sont vides. existe-t-il un moyen de repeupler les champs avec les valeurs saisies afin que les erreurs puissent être corrigées facilement?
La raison derrière cela est que vous conservez l'objet en mémoire plutôt que de créer un nouvel objet; la redirection démarre une requête entièrement nouvelle. –
L'inconvénient est que le formulaire pour créer un objet SomeObject a maintenant deux URL: /some_objects/new # pour le premier formulaire /some_objects # après un échec POST Pas grand chose à faire à ce sujet, cependant. –
Bons points Ian & Gauis –