在ajax请求之后,ReCaptcha输入未在表单中呈现

时间:2013-06-18 21:03:07

标签: ajax ruby-on-rails-3 recaptcha

我在创建用户表单中使用recapcha gem。该表单由ajax使用 data-remote = true 属性提交,然后呈现 create.js.erb 模板。

想法是在提交表格之后:

  1. 如果用户创建 成功呈现正确的消息
  2. 如果用户创建成功再次呈现表单 带有相应的错误
  3. 问题在于,当出现错误时(例如,错误的重新访问代码) - 不会呈现recaptcha输入字段。

    目前,在 create.js.erb 文件中,我只有以下一行:

    $('#b-register').html('<%=j render partial: 'security_users/sign_in' %>');
    

    为什么@securirty_user对象在我不使用本地时会自动传回部分? 当我渲染出与我最初使用的错误相同的部分错误时,为什么缺少重新接收输入?

1 个答案:

答案 0 :(得分:0)

如果您希望使用使用ajax的recapthca进行“登录”表单,则不应重新呈现该表单。

您应该做的是以下内容:

  1. 使 create.js.erb 视图处理ajax请求,并在控制器中添加 format.js

  2. 在新视图中实例化包含如下错误的JavaScript对象:

  3.   

    var current_errors =&lt;%= raw @ security_user.errors.to_json%&gt ;;

    然后您可以随意处理错误 - 添加显示错误文本或其他错误的新元素,但如果只有一个错误:

    1. 清除密码字段

    2. 像这样重新加载recaptcha:

    3.   

      Recaptcha.reload();