Module: SimpleCaptcha::ViewHelper

Included in:
Middleware
Defined in:
lib/simple_captcha/view.rb

Overview

:nodoc

Instance Method Summary collapse

Instance Method Details

#show_simple_captcha(options = {}) ⇒ Object

Simple Captcha is a very simplified captcha.

It can be used as a Model or a Controller based Captcha depending on what options we are passing to the method show_simple_captcha.

show_simple_captcha method will return the image, the label and the text box. This method should be called from the view within your form as…

<%= show_simple_captcha %>

The available options to pass to this method are

  • label

  • object

Label:

default label is “type the text from the image”, it can be modified by passing :label as

<%= show_simple_captcha(:label => “new captcha label”) %>.

Object

This option is needed to create a model based captcha. If this option is not provided, the captcha will be controller based and should be checked in controller’s action just by calling the method simple_captcha_valid?

To make a model based captcha give this option as…

<%= show_simple_captcha(:object => “user”) %> and also call the method apply_simple_captcha in the model this will consider “user” as the object of the model class.

Examples

  • controller based

<%= show_simple_captcha(:label => “Human Authentication: type the text from image above”) %>

  • model based

<%= show_simple_captcha(:object => “person”, :label => “Human Authentication: type the text from image above”) %>

Find more detailed examples with sample images here on my blog EXPRESSICA.com

All Feedbacks/CommentS/Issues/Queries are welcome.



45
46
47
# File 'lib/simple_captcha/view.rb', line 45

def show_simple_captcha(options = {})
  render :partial => SimpleCaptcha.partial_path, :locals => { :simple_captcha_options => simple_captcha_options(options) }
end

#simple_captcha_options(options = {}) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/simple_captcha/view.rb', line 49

def simple_captcha_options(options = {})
  key = simple_captcha_key(options[:object])
  if options[:multiple] === false
    # It's not the first captcha, we only need to return the key
    options[:field_value] = key
  else
    # It's the first captcha in the page, we generate a new key
    options[:field_value] = set_simple_captcha_data(key, options)
  end

  defaults = {
    :image => simple_captcha_image(key, options),
    :label => I18n.t('simple_captcha.label'),
    :field => simple_captcha_field(options),
    :refresh_button => simple_captcha_refresh_button(options),
  }.merge(options)
end