1

J'utilise Rails 4 et Chrome. Les résultats suivants dans la situation:Pourquoi une erreur de validation apparaît-elle sur le formulaire après l'envoi réussi et le retour?

  1. Publier une forme qui provoque une erreur de validation (.-À-dire "Le nom ne peut être vide")
  2. Post que même forme avec succès en corrigeant l'entrée
  3. Hit the navigateur Retour bouton et l'erreur de validation de l'étape 1 est affichée sur le champ d'entrée même si elle a une valeur non vide

Pourquoi l'erreur de validation de l'étape 1 s'affiche-t-elle et comment résoudre ce problème? Remarque: Les turbines sont en cours d'utilisation, cela pourrait-il être la raison?

est ici la façon de répliquer:

rails g scaffold Page name:string 

class Page < ActiveRecord::Base 
    validates :name, presence: true 
end 
Navigate to /pages/new 
Submit (errors appear on the form) 
Fillout the name 
Submit again (redirected to successfully created model) 
Hit the browser back button (the validation errors are there, and the field is filled with the last supplied value) 

Répondre

1

Je suppose que vous utilisez quelque chose comme le code suivant pour renvoyer les erreurs liées à l'enregistrement en cours de création/mise à jour:

def update 
    @post = Post.find(params[:id]) 
    if @post.update_attributes(post_params) 
    # your logic when successfull 
    else 
    render :edit, flash[:errors] = @post.errors 
    end 
end 

Ou quelque chose de similaire. Mon point ici est que vous devez utiliser la syntaxe suivante pour définir les erreurs dans le flash:

flash.now[:errors] = @post.errors 

(1) Cela devrait régler le flash[:errors]disponible uniquement pour la page en cours et supprimez-le juste après quitter cette page.

(2) Vous pouvez également utiliser flash.clear à la fin de votre point de vue, mais ce n'est pas la façon dont il est censé être fait, et semble un peu « aki ».


Ressources:

+0

Salut mon pote! Je n'utilise pas de messages flash, juste des formulaires Rails standards et des validations de modèles. – randomguy

+0

Ajout d'un exemple pour clarifier la situation! Merci! – randomguy

Questions connexes