Ruby on rails 在RubyonRails中,什么代码会询问表单是否通过了所有验证?
我想让我的表单转发给recaptcha,但只有在表单通过所有验证之后。在将用户详细信息保存到数据库之前,我将如何实现这一点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
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会淡入…嗯,我个人认为你应该隐藏表单的提交按钮