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の式を評
価する.
© Copyright 2026 ExpyDoc