Easy_captcha自动刷新

时间:2014-03-04 01:52:13

标签: ruby-on-rails

最近,我在我的项目中使用easy_captchahttps://github.com/phatworx/easy_captcha)。

我有一个注册页面,并且在此页面中放置了验证码,当用户输入用户名时,如果此用户名之前已经过注册,我将发送ajax post请求进行升级。

但是当我提交表格时,我被告知验证码已经过时了。

我发现,当我发送帖子请求时,验证码会刷新,但为什么?我该怎么办?我不能让用户再次手动刷新验证码以提交注册表单。

1 个答案:

答案 0 :(得分:0)

您应该在ajax请求后重新加载验证码标签。尝试重新加载控制器中的验证码,并在提交ajax请求时将其传回。在提交真实内容之前,你基本上是在刷新验证码。

在您的控制器中:

respond_to do |format|
  render :json =>{:captcha =>"<p>#{valid_captcha?(params[:captcha]) ? 'valid' : 'invalid' } captcha</p>"}
end

然后将html设置为

$.post( "ajax/test.html", function( data ) {
  $( ".result" ).html( data['captcha'] );
});

虽然没有代码可以提供一个很好的例子