0

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

想法是之后,提交表单:

  1. 如果用户创建成功呈现正确的消息
  2. 如果用户创建不是再次呈现表单并出现相应的错误

问题是,当出现错误时(例如错误的 recaptcha 代码) - 不会呈现 recaptcha 输入字段。

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

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

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

4

1 回答 1

0

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

你应该做的是:

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

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

var current_errors = <%= raw @security_user.errors.to_json %>;

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

  1. 清除密码字段

  2. 像这样重新加载recaptcha:

Recaptcha.reload();

于 2013-06-24T08:09:12.640 回答