检查rails中是否存在输入框

时间:2012-12-17 20:07:27

标签: ruby-on-rails ruby-on-rails-3 client-side-validation

我必须检查表格中是否存在confirm_password输入框。
如果存在, 我需要这样做:

validates :password,:confirmation=>true

否则

将确认设置为false。

问题的详细说明:

我正在使用rails client_side_validation gem,它将模型验证转换为javascript表单验证。

这有点问题,因为登录和注册属于同一个表,它们都有一个模型。现在,当我在模型中添加它以进行验证时:

validates :password,:confirmation=>true

它不会让我登录,因为验证将变为false,因为登录时没有confirm_password输入框。它只能在注册时使用。

2 个答案:

答案 0 :(得分:1)

在您的注册表单中,您可以拥有一个在表单中传递的隐藏字段。如果该属性存在并返回true,则验证是否存在密码确认。

注册表单,在表单标签内的某处:

<%= form.hidden_field :is_signup, true %>

型号:

attribute_accessor :confirm_password
attribute_accessor :is_signup

validates :confirm_password, :presence => true, :if => :validate_confirm_password?

def validate_confirm_password?
  is_signup
end

答案 1 :(得分:1)

假设模型用户将@user.is_signup = true添加到users_controller中的注册操作。在您的用户模型中添加attribute_accessor :is_signupvalidates :confirm_password, :confirmation => true, :if => :is_signup