Ajax
通常Webアプリケーションではページ単位で画面が遷移します。これに対しAjax(Asynchronous javaScript+XML)はページの一部分を書き換えることで、元の画面を保持しながら進めることができます。
前半は通常の方法でプログラムを、後半はAjaxを利用した方法でプログラムを作成します。
1.通常のプログラムの作成
(1) プロジェクトproj002の生成
・NetBeansで[新規プロジェクト]を選択します。
[ステップ1]プロジェクトを選択
カテゴリ(C): Ruby
プロジェクト(P): Ruby on Rails アプリケーション
[ステップ2]名前と場所
プロジェクト名(N): proj002
プロジェクトの場所(l): D:\Rails_Projects
プロジェクトフォルダ(D): D:\Rails_Projects\proj002
Rubyプラットフォーム(P): Ruby 1.8.7-p72
サーバー(S): WEBrick
[ステップ3]データベース構成
データベースアダプタ(P): mysql
データベース名(D): proj002_development
ユーザー名(M): root
パスワード(W): *******
[ステップ4]Railsのインストール
Railsのバージョン: 2.2.2
・proj002が生成されます。
(2) 日本語環境の設定
・/config/environment.rbの編集
・/app/controllers/application.rbの編集
(3) データベースの作成
今回はデータベースは使用しませんが、Railsでは必須です。
(4)コントローラとビューの生成
・NetBeansで[生成]を選択します。
ジェネレータ(G): controller
名前(N): sankaku
ビュー(V):index hantei
(5) 入力画面プログラムの作成
/app/views/sankaku/index.html.erbを編集します。
/app/views/sankaku/index.html.erb |
|
(6) 判定プログラムの作成
/app/controllers/sankaku_controller.rbを編集します。
/app/controllers/sankaku_controller.rb |
|
(7) 判定結果表示プログラムの作成
/app/views/sankaku/hantei.html.erbを編集します。
/app/views/sankaku/hantei.html.erb |
|
(8) 実行
WEBrickを立ち上げて
ブラウザよりhttp://127.0.0.1:3000/sankaku/を入力して動作を確認してください。
(入力画面)
(結果表示画面)
2.Ajaxの利用
通常Webアプリケーションではページ単位で画面が遷移します。
これに対しAjax(Asynchronous javaScript+XML)はページの一部分を書き換えることで、
元の画面を保持しながら進めることができます。
(1) 入力画面プログラムの編集
Ajaxの機能はJavascriptで実現しています。まずJavascriptを埋め込みましょう。
今回は特定のフィールドを監視し、そのフィールドが更新された場合Ajaxを利用して
サーバとデータの送受信を行います。
これらを実装するため/app/views/sankaku/index.html.erbを編集します。
/app/views/sankaku/index.html.erb |
|
ここでobserve_fieldを説明します。
このobserve_field はrailsのRJSテンプレートという機能を使っています。
RJSテンプレートとは、javascriptを書かなくても簡単にかける機能でパラメータ指定でOKです。
:c / このフィールドを監視する
:update=>"kekka" / この場所を更新する
:position=>"top" / updateで指定した要素のどこに表示するか
指定せず: 要素に上書き
"top": 先頭
"bottom":最後
"before":要素の直前
"after": 要素の直後
:url=>{:action=>"hantei"} / どのメソッドを呼び出すか指定する
:frequency=>0.5 / 監視間隔を指定する
:submit=>"param" / データを送信するフォームまたは子要素を持つ親のidを指定する
(2) 判定プログラムの作成
app/controllers/sankaku_controller.rbを編集します。
このプログラムの最後で制御をパーシャルプログラムに制御を移します。
/app/controllers/sankaku_controller.rb |
|
(3) 結果表示プログラム
_kekka.html.erbを作成します。
ここで_kekka.html.erbはパーシャルerbと呼ばれ、
部分的に更新を行うプログラムのときの約束事で先頭に”_”を付けます。
/app/views/sankaku/_kekka.html.erb |
|