Ruby on rails 如果出现错误,请清除密码字段

Ruby on rails 如果出现错误,请清除密码字段,ruby-on-rails,Ruby On Rails,我有一个带有虚拟属性的常规注册表单: 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

我有一个带有虚拟属性的常规注册表单:

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字段在出错时不显示,但是如果password字段有错误,我无法知道如何使password\u confirmation字段返回

视图很简单

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

我不完全清楚您当前的密码验证是如何工作的,但类似这样的情况如何:

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
class用户

这对您有效吗?

我不完全清楚您当前的密码验证是如何工作的,但类似这样的情况如何:

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
class用户

这对你有用吗?

你能发布一些视图代码吗?在显示这些字段之前,您可能只想将密码和密码确认设置为nil。但是,如果其他字段出现错误,则必须重新输入密码。我想这并不是不合理的。你能发布一些你的视图代码吗?在显示这些字段之前,您可能只想将密码和密码确认设置为nil。但是,如果其他字段出现错误,则必须重新输入密码。我想这不是不合理的。