我有2个步骤组成的注册。在第一个步骤中,新用户将设置他的姓名、电子邮件和密码。然后他点击“注册”按钮,并被重定向到页面,其中是注册表的第二部分(大约5-7个字段)。
我已经在所有输入(7-10字段)上设置了验证规则。问题是,当我填写表单的第一部分,然后单击Sign Up按钮时,我看到验证错误,因为表单第二部分的字段无效。
如何避免这种行为?
谢谢
发布于 2013-09-04 22:53:38
您可以定义一个虚拟属性,该属性将用于确定在哪个步骤验证哪些属性,然后在with_options
上使用该属性的值在每个步骤验证必填字段。
类似于以下内容:
在您的模型中:
class MyModal < ActiveRecord::Base
attr_accessor :validate_step
with_options if: :validate_step_one? do |o|
o.validates :name, presence: true
o.validates :email, presence: true
o.validates :password, presence: true
end
with_options if: :validate_step_two? do |o|
...
end
private:
def validate_step_one?
self.validate_step == 'validate_first_step'
end
def validate_step_two?
self.validate_step == 'validate_second_step'
end
end
然后在您的控制器中:
class MyRegistrationController < ApplicationController
def show
case step
when :first_step
user.validate_step = 'validate_first_step'
when :second_step
user.validate_step = 'validate_second_step'
end
end
end
在控制器中,在构建对象的操作中,您需要根据向导中的当前步骤分配validate_first_step
或validate_second_step
。
请注意,我使用的值和名称不是很有描述性/有意义,您应该知道如何命名它们:)
https://stackoverflow.com/questions/18616774
复制相似问题