Rails同様、prototype.jsとscript.aculo.usをサポートしている様子。script.aculo.usからダウンロードして、app/webroot/jsに配置します。
で、必要なファイルを読み込んで、AjaxHelperが、使えるようになる。APIリファレンスがナイとどうしようもないので、phpDocumentorで生成しておきます。
それと、必ずハマるのは、CakePHPのスタックトレース出力。アレのせいでJavaScriptが動かないことが多々あります。私もそのおかげで、ずーっとぜんっぜん動かなくて、小一時間ハマッていました。
Ajaxをやるときは、ぜひとも define('DEBUG', 0 ) で!
もちろんバグがあるとウンともスンとも言わなくなるので、サーバログなり、FireBugなり使います。(サーバログは出すけどHTML出力はしない、っていう設定ナイか?)
phpdocをざっと見回すと、どうやら基本的なAjax.UpdaterとEvent、マクロはオートコンプリート/ドラッグ&ドロップ/スライダーあたりしか対応していないようで、AjaxHelperはscript.aculo.usの機能を網羅しているわけではなさそうです。でもまあ、ただのお助けメソッドですから、Helperがなければ生でJavaScript書くだけなので。。
■Ajax.Updater
これで、add_actionアクションの結果を、cart_divプレースフォルダに、AjaxUpdateするリンクができます。
正直、$ajax->div は無用の長物でして、素直に、
<div id="cart_div"/> とHTMLを書いたほうが良さそう。
■Ajax.Autocompleter
Cakeの $ajax->autoCompleteは、
RailsのJavaScriptMacrosHelper.text_field_with_auto_complete
と同等の機能になります。
ここでかなり気になったのは、$ajax->autoCompleteの第3引数のarray。この引数で指定する属性が、HTMLタグに対するものと、Ajax.Autocompleterの設定値と、混在してる。
AjaxHelperのメソッドは、全体的にそういう風にできていて、ソースを読むと属性名で(一生懸命)振分けをしているようです。
リファレンスには、「この引数にはHTMLオブション+autoCompleteオプションが使える」などの注意書きはあるので、よく読む必要アリ。
それと、その副作用で、指定しても認識してくれない属性もあります。使える属性が、リファレンスに確かにちゃんと書いてはありますが・・。
もはや検証する気が失せましたw。後はどちらかといえば
script.aculo.usの話なので、このくらいにしておく。
・ヘルパーメソッドの名前と、生成するHTML+JSにギャップがある。
・そもそも"AjaxHelper"っていう名前が???
・引数$optionsの意味が明確じゃない。
→ だからトライ&エラーの繰り返し。
→ そんな時間があるなら、生でJS書いちゃうよ。
最後に
短く書ければいいってもんじゃない!
とだけ申し上げておきます。