首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails -如何验证两步表单?

Rails -如何验证两步表单?
EN

Stack Overflow用户
提问于 2013-09-04 22:37:21
回答 1查看 939关注 0票数 1

我有2个步骤组成的注册。在第一个步骤中,新用户将设置他的姓名、电子邮件和密码。然后他点击“注册”按钮,并被重定向到页面,其中是注册表的第二部分(大约5-7个字段)。

我已经在所有输入(7-10字段)上设置了验证规则。问题是,当我填写表单的第一部分,然后单击Sign Up按钮时,我看到验证错误,因为表单第二部分的字段无效。

如何避免这种行为?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-09-04 22:53:38

您可以定义一个虚拟属性,该属性将用于确定在哪个步骤验证哪些属性,然后在with_options上使用该属性的值在每个步骤验证必填字段。

类似于以下内容:

在您的模型中:

代码语言:javascript
运行
复制
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

然后在您的控制器中:

代码语言:javascript
运行
复制
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_stepvalidate_second_step

请注意,我使用的值和名称不是很有描述性/有意义,您应该知道如何命名它们:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18616774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档