|
||||||||||||
| 前のページ 1 2 3 | ||||||||||||
| 別の出力形式にも対応可能 | ||||||||||||
|
この部分を拡張するとHTMLやXML以外にも様々なフォーマットに対応することができます。例えばAjaxなどでよく使われる「JSON」フォーマットをサポートしたい場合には、6行目と7行目の間に以下の1行を追加してください。
format.json { render :json => @stickies.to_json }
なおJSONフォーマットについては下記の連載を参考にしてください。
PerlでWeb APIを使いたおす
第6回:JSONとYAML これでWebブラウザから「http://localhost:3000/stickies.json」にアクセスすると、リスト3のようなJSONフォーマットのファイルをダウンロードすることができます。 リスト3:JSONフォーマットのファイル
[{attributes: {x: "0.5", updated_at: "2007-08-26 05:36:23", body: "test", id: "1", height: "100", created_at: "2007-08-26 05:36:00", width: "300", y: "0.5"}}]
このようにscaffold_resourceで作ったコントローラは、HTML以外の様々なフォーマットに対応させることができます。 また「http://localhost:3000/stickies」にアクセスしてDestroyリンクのソースコードをみてみましょう。ソースコードには、onclick属性の中で複雑なJavascriptが書かれています。これはprototype.jsを使い、POSTメソッドで_method=deleteを送信し、擬似的にDELETEメソッドで送信してます。 |
||||||||||||
| createアクションで新しいレコードを作成 | ||||||||||||
|
次に、新しいレコードを登録するcreateアクションをみてみましょう(リスト4)。 リスト4:createアクション scaffold_resourceでは、出力フォーマットとしてHTMLやXMLなど複数の形式をサポートしています。しかし、入力に関しては通常のHTTPのパラメータで渡されます。そのため、レコードの生成は2行目にあるように、通常のscaffoldと同じparamsの値を渡して行います。 出力の部分ではindexアクションと同様、出力したいフォーマットに合わせて4〜13行目のように記述します。レコードの生成が正常に行われた場合、HTMLではそのStickyのページへリダイレクトします。またXMLでは、HTTPのレスポンスコードとして201を返し、いま作られたレコードのURLをLocationヘッダで渡します。 RESTではHTTPのレスポンスコードも大きな意味を持っています。レコードが作られた場合には通常の200ではなく、きちんとそれに合わせた201というレスポンスコードを返します。 レコードの生成に失敗すると、HTMLの場合はもう一度入力フォームに戻り、XMLの場合はエラーの内容がXMLで返ります。 このようにscaffold_resourceで作られたコントローラはHTTPを通じ、他のアプリケーションから操作しやすいインターフェースを提供します。RoRの次期バージョンである2.0では、このRESTに対応した「ActiveResource」という機能が提供される予定です。 この「ActiveResource」を使うことで、外部のサーバに簡単にアクセスするためのクライアントとして、RoRアプリケーション間の連携を簡単に行うことができるようになります。 またAdobe AIRもXMLを簡単に処理するための「E4X」という機能を持っており、RESTfulなアプリケーションとの連携が容易に行えるようになっています。 |
||||||||||||
| 次回は | ||||||||||||
|
さて次回は、今回作った付箋紙サーバにアクセスするためのAdobe AIRクライアントの作成に入ります。 |
||||||||||||
|
前のページ 1 2 3 |
||||||||||||
|
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||


