Ruby on rails 在RubyonRails中,什么代码会询问表单是否通过了所有验证?

Ruby on rails 在RubyonRails中,什么代码会询问表单是否通过了所有验证?,ruby-on-rails,ruby,ruby-on-rails-3,rubygems,ruby-on-rails-3.1,Ruby On Rails,Ruby,Ruby On Rails 3,Rubygems,Ruby On Rails 3.1,我想让我的表单转发给recaptcha,但只有在表单通过所有验证之后。在将用户详细信息保存到数据库之前,我将如何实现这一点 def create @user = User.new(params[:user]) respond_to do |format| if @user.save #to recaptcha, but before save and only after sign up form passes validation

我想让我的表单转发给recaptcha,但只有在表单通过所有验证之后。在将用户详细信息保存到数据库之前,我将如何实现这一点

def create
      @user = User.new(params[:user])     
      respond_to do |format|
      if @user.save

        #to recaptcha, but before save and only after sign up form passes validation
      else

      format.html { render :new }  
      format.js   { render :form_errors }
      end
    end
  end

验证存在于模型中,您只需在控制器中执行此操作:

@user.valid?
然后做你的重述


另一种解决方案是使用回调,例如:
在保存之前
在创建之前
,但只有在模型中可以访问recaptcha时(我对此表示怀疑)。

验证存在于模型中,您只需在控制器中执行此操作即可:

@user.valid?
然后做你的重述


另一种解决方案是使用回调,例如:
在保存之前
在创建之前
,但只有在模型中可以访问recaptcha时(我对此表示怀疑)。

此Railscast包含了您需要了解的关于多步骤表单的所有信息。这一集包括验证和在步骤之间来回移动

听起来您的表单有两个步骤,第一步是输入所有信息,第二步只是验证码输入


现在,在我看来,您应该将验证码滚动到主用户输入表单中,并将其保留在一个页面上,而不是进行两个步骤的过程,我以前已经完成了这两个步骤,将验证码作为同一表单的一部分要简单得多,也不太复杂。将所有内容都放在一个表单中,可以将所有逻辑(大部分)整合到一个控制器操作中。可能有一些逻辑可以从控制器中抽象出来,变成一个助手方法,比如验证码的验证,这将使控制器的操作变得不那么复杂。您最不想做的事情是使您的操作逻辑过于复杂。

此Railscast提供了您需要了解的关于多步骤表单的所有信息。这一集包括验证和在步骤之间来回移动

听起来您的表单有两个步骤,第一步是输入所有信息,第二步只是验证码输入

现在,在我看来,您应该将验证码滚动到主用户输入表单中,并将其保留在一个页面上,而不是进行两个步骤的过程,我以前已经完成了这两个步骤,将验证码作为同一表单的一部分要简单得多,也不太复杂。将所有内容都放在一个表单中,可以将所有逻辑(大部分)整合到一个控制器操作中。可能有一些逻辑可以从控制器中抽象出来,变成一个助手方法,比如验证码的验证,这将使控制器的操作变得不那么复杂。你最不想做的事情就是让你的动作逻辑过于复杂。

好好看看,问问自己是否真的需要验证码

除此之外,您还可以使用:
在验证之后
在保存之前
在保存之后
在创建之前
在创建之后
在创建之后
在更新之前
在更新之后
更新后
处理仍在交易中的内容

调用其中一个回调的方法是在
模型中简单地声明它们

但是,如果需要使用验证码,我会使用javascript和ajax,在用户发送之前将其附加到表单中

在收到表单的帖子后,您不应在控制器中执行此操作,因为您必须:

  • 验证后将填写的表单值存储在会话中(不保存)
  • 将用户重定向到验证码页面(这会使任何用户感到困惑)
  • 在通过验证码之前,请多次检查验证码(它们非常不可读)
  • 将模型从会话中取出(您不知道它是哪一个)
  • 在模型上调用save将其实际写入数据库
  • 因此,基本上你避免在验证码通过之前启动交易。

    仔细看看,问问自己是否真的需要验证码

    除此之外,您还可以使用:
    在验证之后
    在保存之前
    在保存之后
    在创建之前
    在创建之后
    在创建之后
    在更新之前
    在更新之后
    更新后
    处理仍在交易中的内容

    调用其中一个回调的方法是在
    模型中简单地声明它们

    但是,如果需要使用验证码,我会使用javascript和ajax,在用户发送之前将其附加到表单中

    在收到表单的帖子后,您不应在控制器中执行此操作,因为您必须:

  • 验证后将填写的表单值存储在会话中(不保存)
  • 将用户重定向到验证码页面(这会使任何用户感到困惑)
  • 在通过验证码之前,请多次检查验证码(它们非常不可读)
  • 将模型从会话中取出(您不知道它是哪一个)
  • 在模型上调用save将其实际写入数据库

  • 因此,基本上您可以避免在验证码通过之前启动事务。

    最好在表单中包含recaptcha,然后说表单只有在正确填写recaptcha时才有效。出于设计目的,我不会在同一页上显示recaptcha。。ajax会逐渐淡出。嗯,我个人认为你应该隐藏表单的提交按钮和验证码,并在用户填写完表单后使用
    元素将其重新显示出来。这会容易得多。最好在表单中包含recaptcha,然后说表单只有在正确填写recaptcha时才有效。出于设计目的,我不会在同一页上显示recaptcha。。ajax会淡入…嗯,我个人认为你应该隐藏表单的提交按钮