3

私の Rails アプリには、Ambethia Recaptcha gem のヘルパーによって提供される Recaptcha マークアップを含む Ajax フォームがあります。

recaptcha_tags :ajax => true

送信時に、フォームは create アクションにヒットし、以下を含む create.js.erb で応答します。

$('#message-form').replaceWith("<%= escape_javascript(render('message')) %>");

「メッセージ」パーシャルには、recaptcha_tags など、最初にレンダリングされたものと同じフォーム マークアップが含まれていますが、この時点で検証にエラーがあった場合にも表示されることがあります。

Firefox では、フォームが再レンダリングされ、更新されたキャプチャが表示されます。しかし、何らかの理由で、Webkit ブラウザー (Safari および Chrome) では、Recaptcha.create(public_key, element_id) が呼び出されないかのように、'dynamic_recaptcha' Recaptcha 要素が空になります。

Safari 開発者コンソールでは、Recaptcha.create(public_key, element_id) を呼び出してキャプチャを再生成できます。

ここで何が起こっているのか誰か教えてもらえますか? ありがとう。

4

4 に答える 4

4

同じ問題が発生し、Webkitブラウザのrecaptcha_tagsで動作させることができませんでした。

最後に、私は公式ガイドラインに従い、そのように書きました(HAMLで)...。


  1. レイアウトヘッドタグ内:

    = javascript_include_tag "http://api.recaptcha.net/js/recaptcha_ajax.js"
    
  2. ajaxを介してレンダリングされたパーシャルで:

    #dynamic_recaptcha
    :javascript
      Recaptcha.create('YOURPLUBLICKEY', document.getElementById('dynamic_recaptcha') , '')
    

http://code.google.com/apis/recaptcha/docs/display.html

于 2010-07-28T03:04:05.010 に答える
1

誰かがこの問題を抱えている場合、 ajax: true が私にとってはうまくいきました。Rails 3.2.13とrecaptcha 0.3.5を使用しています

=recaptcha_tags(display: {theme: 'clean'}, ajax: true)
于 2013-05-31T03:49:14.897 に答える
0

次の方法で解決します。

実行時に ajax によってロードされないスクリプトを頭に入れます。

<script type="text/javascript" src="http://api.recaptcha.net/js/recaptcha_ajax.js"></script>

オプションでテーマ:

<script type="text/javascript">var RecaptchaOptions = {"theme":"clean"};</script>

次に、evalScriptsオプションをtrueにして Ajax.Updater を呼び出します。

new Ajax.Updater('example_div', '/example', { parameters: {text: $F('example_text')}, evalScripts: 'true'});
于 2010-11-13T09:53:17.367 に答える