【问题标题】:Rails 4, recaptcha and turbolinksRails 4,recaptcha 和 turbolinks
【发布时间】:2013-09-07 11:15:34
【问题描述】:

我正在尝试以我的一种形式实现 recaptcha。我在我的表单中使用下面的代码

<script type="text/javascript"
  src="http://www.google.com/recaptcha/api/challenge?k=your_public_key">
</script>
<noscript>
  <iframe src="http://www.google.com/recaptcha/api/noscript?k=your_public_key"
     height="300" width="500" frameborder="0"></iframe><br>
   <textarea name="recaptcha_challenge_field" rows="3" cols="40">
   </textarea>
   <input type="hidden" name="recaptcha_response_field"
     value="manual_challenge">
</noscript>

如果我点击包含recaptcha 的页面的链接,它不会显示。如果我然后使用浏览器重新加载页面,则会显示它。

我发现这是由于使用了 turbolinks。

我知道将data-no-turbolink 放置在正文标签中可以防止该页面的涡轮链接,这很有效,但我不确定这是否是正确的方法,如果我想为整个页面禁用它只是为了让 recpatcha 工作(看起来很老套)。

我还将recaptcha 代码包含在一个div 中,并将data-no-turbolink 放入标签中,但这不起作用。

有没有办法只为带有 recaptcha 的表单禁用 turbolinks,或者我应该尝试另一种方法来解决这个问题?

【问题讨论】:

    标签: javascript ruby-on-rails ruby-on-rails-4 recaptcha turbolinks


    【解决方案1】:

    我遇到了同样的问题。这里是:https://github.com/ambethia/recaptcha/issues/83

    禁用整个页面的 turbolinks。

    <%= link_to "Sign up", new_registration_path(resource_name), "data-no-turbolink" => true %><br />
    

    【讨论】:

    • 谢谢!这也解决了我的问题。
    • 它可能关心的人 - 根据 github (github.com/ambethia/recaptcha/issues/83#issuecomment-30019798) 上的错误报告,还有一个简单的 ajax 修复:只需使用 - 工作得很好我!
    • @Ben,在我看来,您应该将此作为答案发布。它有效,并且比这个答案更有效。
    【解决方案2】:

    它可能关注的对象 - 根据 github (http://github.com/ambethia/recaptcha/issues/83#issuecomment-30019798) 上的错误报告,还有一个简单的 ajax 修复。

    简单使用:

    <%= recaptcha_tags ajax: true %> 
    

    对我来说工作得很好!

    【讨论】: