吉田裕美 [著] 2009/06/30 15:00

 Ruby on Railsをサーバーサイドに使い、ビューにCurlを使ったRIAアプリケーションの開発です。今回はリッチクライアント版のCRUDアプリを作成します。

1 2 3 4 5 →

はじめに

 前回はRuby on RailsのScaffold機能で作ったテーブルに対してデータのCRUD(作成・読み出し・更新・削除)ができるWebアプリを作りました。今回は下の画面のようなCurlを使ったリッチクライアント版のCRUDアプリを作成してみましょう。

 また、先日Curl Ver.7がリリースされたましたので今回からVer.7を使います。実行環境(RTE)、IDEをダウンロード・インストールしてください。

前回の記事

Ruby on Rails とリッチクライアントのインターフェース

 前回のScaffoldの生成したコードの説明でも少し触れたように、Ruby on Railsはたいへんリッチクライアントと相性の良い設計になっています。

データフォーマット

 Ruby on Railsは通常のHTML以外にXMLフォーマットのデータを出力できます。またXMLだけではなく、以下のように1行コードを追加するだけでJSONフォーマットのデータも簡単に出力できます。

def index
  @players = Player.all

  respond_to do |format|
    format.html # index.html.erb
    format.xml  { render :xml  => @players }
    format.json { render :json => @players }   # ← この行を追加
  end
end

 さらに出力だけなくデータの受け取りも、通常使われるapplication/x-www-form-urlencodedやmultipart/form-dataだけでなく、XML、JSONフォーマットのデータもプログラムを変更する事なく使用できます。

REST

 Ruby on RailsのコントローラーはREST(Representational State Transfer)原則に従っています。RESTではテーブル等のリソースをURLで一意に指定し、そのデータをHTTPメッソドのPOST、GET、 PUT、DELETEを使って、作成/読み出し/更新/削除できるなっています。

URLメソッド操作
http://localhost:3000/playersGETplayesテーブルの一覧
http://localhost:3000/players/123GETid=123データの読み出し
http://localhost:3000/playersPOST新規データの作成
http://localhost:3000/players/123PUTid=123データの更新
http://localhost:3000/players/123DELETEid=123データの削除

 また、JSONフォーマットで情報を操作する場合は次のようなURLになります。

URLメソッド操作
http://localhost:3000/players.jsonGETplayesテーブルの一覧
http://localhost:3000/players/123.jsonGETid=123データの読み出し
http://localhost:3000/players.jsonPOST新規データの作成
http://localhost:3000/players/123.jsonPUTid=123データの更新
http://localhost:3000/players/123.jsonDELETEid=123データの削除

 このようなシンプルな考え方により、リッチクライアント側からのサーバーアクセスを統一的に操作でき、クライアント側のソフトをより簡潔にしています。


1 2 3 4 5
→
INDEX
Ruby on Rails + Curl リッチクライアントCRUDアプリを作成する
Page1
はじめに
Ruby on Rails とリッチクライアントのインターフェース
JSONフォーマット出力機能の追加
データ一覧の表示
トップページ
データの変更
データの新規作成
データの削除
まとめ
プロフィール
吉田裕美 ヨシダユウミ

有限会社 EY-Office 取締役
CADのベンチャー企業でCADのコア部分や図面管理システムなどの開発に従事した後、独立しJava,Ruby,PerlでWebアプリを中心に開発してきた。現在は殆どの開発はRuby on Rails。
ここ数年はソフトウェアエンジニアの教育に興味をもち、従来の知識偏重な教育ではなく現実の問題を解決できるエンジニアを育てる教育に注力している。
またLisp等に関心がありWebメディアでいくつか記事を書いている。
ブログ: http://d.hatena.ne.jp/yuum3/


記事へのコメント・トラックバック機能は2011年6月に廃止させていただきました。記事に対する反響はTwitterやFacebook、ソーシャルブックマークサービスのコメントなどでぜひお寄せください。

スポンサーサイト