2009-05-14 5 views
0

J'ai un formulaire d'inscription régulier avec virtual_attributes:Les champs de mot de passe clair si des erreurs

attr_accessor :password_confirmation 

def password 
    @password 
end 

def password=(password) 
    @password=self.crypted_password = User.encrypt(@password=pass, create_new_password_salt) 
end 

Je voudrais effacer les champs de mot de passe de la forme quand il y a des erreurs sur le mot de passe. J'ai trouvé comment rendre le champ de mot de passe ne pas montrer sur l'erreur en utilisant le retour, mais je ne peux pas comprendre comment rendre le champ password_confirmation retourner s'il y a des erreurs sur le champ de mot de passe.

les vues ne sont que simples

<% form_for @user do |f| %> 
    <%= f.password_field :password %> 
    <%= f.password_field :password_confirmation %> 
<% end %> 
+0

Pouvez-vous poster une partie de votre code d'affichage? Vous pouvez juste vouloir mettre le mot de passe et password_confirmation à zéro avant d'afficher ces champs. –

+0

Mais s'il y avait des erreurs sur d'autres champs, ils devraient entrer à nouveau le mot de passe. Ce qui n'est pas déraisonnable je suppose. – Cameron

Répondre

3

Il est pas tout à fait clair pour moi comment la validation de votre mot de passe actuel fonctionne, mais que diriez-vous quelque chose comme ceci:

class User < ActiveRecord::Base 
    ... 
    validate :password_confirmation_matches 

    def password_confirmation_matches 
    if password != password_confirmation 
     errors.add_to_base("You did not correctly confirm your password") 
     self.password_confirmation = self.password = nil 
    end 
    end 
end 

Est-ce que ce travail pour vous?

+0

Pourrait l'essayer! Merci – Cameron

+0

Je l'ai modifié un peu mais ça marchait bien. Merci – Cameron

Questions connexes