--- layout: old_post title: RESTなRails向けのJavaScriptライブラリ Jester まとめ permalink: /tatsuya/show/303-rest-rails-javascript-jester ---

昨日のエントリJesterについて補足。
Jester.jsソースを見ると本当にシンプルで、まだ欲しい機能もありそうなので一通りまとめてみた。

基本的な登場人物はBaseクラス (prototype) だけ、あとXML.ObjTreというライブラリを使用してXML → DOM → XMLの変換を行ってるみたい。このライブラリ何気に日本人が作者なんだね、初めて知った。 以下まとめ

主なメソッド

Base.model(モデル名, サーバURL, 単数形の名前, 複数形の名前)

modelクラスの宣言。もしモデル名がBookなどで、単数形book & 複数形books のように単純な変化なら暗黙的に行ってくれる。 Base.model("Book") でOK。
例;Base.model("Book");

Base.find(目的のID)

モデル名Book & 引数のidが1だとすれば http://localhost:3000/books/1.xml へGETリクエストして結果XMLをJavaScriptのオブジェクトにパースする。
例:var book = Book.find(6);

Base.対象プロパティ

モデルBookのtitleを編集する場合、 Book.title = "新しいタイトル" のように直接編集
例:book.title="新しいタイトル"

Base.save()

オブジェクトの保存、新規か更新かでPOSTとPUTを切り替えてくれる。正確にはPOSTリクエストに _method=put を付けた疑似PUTアクセス
例;book.save();

Base.destroy()

オブジェクトの削除、DELETEリクエストを投げる(_method=delete)
例:book.destroy();

Base.build({属性: , 属性: })

オブジェクトを引数の属性&値で新規作成、newがJavaScriptの予約語なので"build"らしい。saveはされない。
例:var book = Book.build({title: "オブジェクト指向スクリプト言語Ruby"})

Base.create({属性: , 属性: })

オブジェクトを引数の属性&値で新規作成してsaveも行う。build -> save
例:var book = Book.create({title: "オブジェクト指向スクリプト言語Ruby"})

その他

Base.new_record()

そのオブジェクトが新規の物か?サーバへ保存済みか?をbooleanで返す。Base.buildの後はtrue

Base.singular_url()

オブジェクトの単数形のURL。http://localhost:3000/books/1.xml

Base.plural_url()

オブジェクトの複数形のURL。http://localhost:3000/books.xml

Base.valid()

オブジェクトの保存でエラーがあった場合trueを返す。入力チェック等

Base.errors[]

オブジェクト保存でエラーがあった場合、エラーメッセージ保存