CAPTCHA on iKnow!の使い方

http://code.google.com/p/captcha-on-iknow/

まだいろいろ作り込みが足りないのでgemにしたりはしないけど、かといって誰にも触ってももらえないのも寂しいので使い方を書いてみる。

上にも書いたけど、音声キャプチャはわりといい感じだと思うよ。

せっかくだしRailsアプリ生成から。

テストアプリ生成

$ rails iknow_test
$ cd iknow_test
$ ./script/generate scaffold Post name:string
$ rake db:migrate

プラグインインストール

$ cd vendor/plugins
$ svn export http://captcha-on-iknow.googlecode.com/svn/trunk/ captcha_on_iknow

Captcha on iKnow!ファイル生成

$ ./script/generate captcha_on_iknow [iknow account]

ここで指定した[iknow account]を持つユーザーが最近勉強した項目を、CAPTCHAのアイテムとして使用する。自分のを使いたくないならtechnohippyでも使ってください。

レイアウトでCSSとJSを読み込む(app/views/layouts/post.html.erb)

<%= javascript_include_tag :defaults %>    
<%= stylesheet_link_tag 'captcha_on_iknow' %> <!-- 追加 -->
<%= captcha_on_iknow_js_tag %> <!-- 追加 -->

コントローラにキャプチャチェック用のbefore_filterを設定(app/controllers/posts_controller.rb)

class PostsController < ApplicationController
  iknow_captcha_check :only => ['create', 'update'] # 追加

ビューでキャプチャ表示(app/views/posts/new.html.erb)

<h1>New posts</h1>
<% form_for(@posts) do |f| %>
  <%= f.error_messages %>
  <p><%= f.label :name %><br />
     <%= f.text_field :name %></p>  
  <p><%= iknow_captcha_field %></p> <!-- 追加 --> 
  <p><%= f.submit "Create" %></p>
<% end %>
<%= link_to 'Back', posts_path %>

動作確認

$ ./scrpipt/server

して、http://localhost:3000/posts/new にアクセス

Createボタンを押すと、選択が正しければ登録されるし間違ってると元の画面に戻される。ちなみに元の画面に戻ったときに入力が空になるのは仕様というか手抜きなんだけど、いつか直す。

まとめ

上に書いてある通り、cssとjsの読み込みを含めてもたった4行でキャプチャが追加できるのは悪くないと思うんだけどどうだろ。