4

I am currently using ambethia's recaptcha plugin for rails. I want to disable the message

"incorrect-captcha-sol"

whenever the user incorrectly enters the wrong recaptcha. How should I go about doing this?

In the source file I get the following tags surrounding the error message

<p class="recaptcha_error">incorrect-captcha-sol</p>
denniss
  • 17,229
  • 26
  • 92
  • 141

4 Answers4

11

Because flash[] is an array you could delete element inside it. When we use recaptcha gem, the flash array contain recaptcha_error element, so you just only delete this element with : flash.delete(:recaptcha_error) inside your controller.

For example :

if  verify_recaptcha(:model=>@object,:message=>"Verification code is wrong", :attribute=>"verification code") && @object.save
  #your code if succes
else
  flash.delete(:recaptcha_error)
  #your code if its fail
end

Maybe it could help you. Thanks

Agung Prasetyo
  • 4,353
  • 5
  • 29
  • 37
3

The plugin sets the flash (more precisely flash[:recaptcha_error]), i.e. it won't display message automatically. Most likely you have a piece of code that displays all flash messages. Try removing it and/or excluding flash[:recaptcha_error] from being displayed.

Slobodan Kovacevic
  • 6,848
  • 3
  • 29
  • 33
0

You might be getting this because you haven't placed a translation file. I think correct way is not to delete flash message but put i18n file

Example:

en:
  recaptcha:
    errors:
      incorrect-captcha-sol: 'Fail'

See https://github.com/ambethia/recaptcha#i18n-support

VarunBatraIT
  • 44
  • 1
  • 4
0

I have solved this, it is most of the unusual things I have come across, my syntax was previously:

<table>
<form>
<tr><td></td></tr>
</form>
</table>

I changed it to this:

<form>
<table>
<tr><td></td></tr>
</table>
</form>

Because of this switch, suddenly the recaptcha_response_field and recaptcha_challenge_field are posting values back to the form.

I cannot think why this because all MY form variables got posted back before the switch.

leviathan
  • 11,080
  • 5
  • 42
  • 40