我有一个带有virtual_attributes的常规注册表单:
attr_accessor :password_confirmation
def password
@password
end
def password=(password)
@password=self.crypted_password = User.encrypt(@password=pass, create_new_password_salt)
end
我想在密码出错时清除表单的密码字段。我想出了如何使用return在错误时显示密码字段,但如果密码字段中有错误,我无法弄清楚如何使password_confirmation字段返回。
视图很简单
<% form_for @user do |f| %>
<%= f.password_field :password %>
<%= f.password_field :password_confirmation %>
<% end %>
答案 0 :(得分:3)
我目前还不完全清楚您当前的密码验证是如何工作的,但是如何做到这一点:
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
这会对你有用吗?