ppt

RailsによるAjaxの利用
03-1-47-002
4回生
小野 実
お品書き

Ajax


Ajaxとは
RailsでのAjax利用方法







link_to_remote()
form_remote_tag()
オブザーバ
periodically_call_remote()
視覚効果
置換
コールバック
Ajaxとは
Asynchronous JavaScript and XML
 asynchronous:非同期
Ajaxという技術があるわけではない




XMLHtmlRequest
DHTML(:DynamicHTML)
サーバサイドウェブアプリケーション
これらを複合した技がAjax
例:GoogleSuggest,GoogleMaps,etc.
利用方法







link_to_remote
form_remote_tag()
オブザーバ
periodically_call_remote
視覚効果
置換
コールバック
link_to_remote

基本的なAjax呼び出しを行うための構文
<%= link_to_remote(“Ajax処理を実行”,
:update => ‘mydiv’,
:url => { :action => :say_hello }) %>

3つのパラメータを受け取る



リンクの文字列
更新するページ上の要素のid=属性
呼び出すアクションのURLをurl_for()形式で記述したもの
補足:url_for()形式
url_for {:controller => example,
:action => periodic,
:id => 1}
http://RAILS_ROOT/example/periodic/1
form_remote_tag()


form_tag()のAjax版
form_tag()をform_remote_tag()に置き換えるだ
けでよい
<%= form_remote_tag(:update => ‘hoge’,
:url {:action => ‘test’})%>
<%= text_field_tag :text1 %>
<%= submit_tag “送信” %>
<%= end_form_tag %>
オブザーバ



文字予測に使われる
observe:観察する,監視する
GoogleSuggest,郵便番号検索が有名
<%= observe_field(:word,
:frequency => 0.5,
:update => :results,
:url => { :action => :search})%>
定期的な更新:periodically_call_remote()


periodically :定期的に,周期的に
Ajaxを介して定期的にサーバを呼び出す
<%= periodically_call_remote(:update => ‘list’,
:url => {:action => :ps},
:frequency => 2) %>
DocumentObjectModel(DOM)操作

$(id)


Element.toggle(element,...)


指定された要素が表示されるように保証する.
Element.hide(element,...)


指定の要素が表示されるかどうかを切り替える.
Element.show(element,...)


指定のidのDOM要素を返す.そうでなければその引
数を返す.
指定された表祖が表示されないように保証する.
Element.remove(element)

指定された要素を完全にDOMから削除します.
視覚効果(1回限りの効果)

Effect.Appear(element)


Effect.Fade(element)


Appeearの逆で滑らかにフェードアウトさせる.
Effect.Highlight(element)


指定されたようその不透明度を0%~100%まで滑らか
に変化かさせる.(滑らかなフェードイン)
要素に対してYellowFadeTechniqueを使い,その背
景を黄色から白へと滑らかにフェードさせる.
Effect.Puff(element)
視覚効果(1回限りの効果)

Effect.Puff(element)


煙が徐々に雲状に広がって要素が消えたように見せ
る.
Effect.Squish(element)

滑らかに縮小させることで要素を消す.
視覚効果(繰り返し呼び出し可能)

Effect.Scale(element,percent)


指定された要素を滑らかに拡大縮小する.
Effect.setContentZoom(element,percent)

emを単位として使用するテキストや,その他の要素
のスケールを設定する,アニメーションによらない手
法を提供.
置換

Insertion.Top(element,content)


Insertion.Bottom(element,content)


要素の終了の直前にHTMLの断片を挿入する.
Insertion.Before(element,content)


要素の開始の直後にHTMLの断片を挿入する.
要素の開始の前にHTMLフラグメントを挿入する.
Insertion.After(element,content)

要素の終了の後にHTMLフラグメントを挿入する.
コールバック




目的の作業の前後に「付随して行わせる作業」.
link_to_remote()、form_remote_tag()、
observe_xxxメソッドで利用できる.
requestと呼ばれるJavaScript変数にアクセスで
きる.
requestにはXMLHttpRequestオブジェクトが格
納されている.
コールバック

:loading()


:loaded()


全てのデータがサーバに送信され終わると呼び出さ
れる.
:interactive()


サーバにデータを送信し始めると呼び出される.
データがサーバから戻り始めたことをきっかけに呼び
出される.
:complete()

サーバからの全てのデータを受信し呼び出しが完了
すると,呼び出される.
コールバック(link_to_remote限定)

:confirm


:condition


JavaScriptの式を評価し提供する.リモートリクエスト
は,式がtrueの場合のみ開始される.
:before


確認ダイアログを利用する.
Ajax呼び出しが行われる直前でJavaScriptの式を評
価する.
:after

Ajax呼び出しが行われる直後にJavaScriptの式を評
価する.