2014-03-04 104 views
0

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

我有一个注册页面,并且验证码被放置在这个页面中,当用户输入一个用户名,我会发送一个ajax post请求,如果此用户名已被签名。

但是当我提交表单时,我被告知验证码已过期。

我发现,当我发送一个post请求时,captcha会刷新,但是为什么?我该怎么办?我无法让用户再次手动刷新验证码以提交注册表单。

回答

0

您应该在ajax请求后重新加载captcha标记。尝试重新加载控制器中的验证码并在您提交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']); 
}); 

它很难给出一个很好的例子,没有代码去虽然