Jester
Jesterにはびっくりしたけど、XMLを使わなきゃなんないのかーって思って放置してたらJSONで通信できるようになってました。
こちらが詳しく紹介してくれています。
http://blog.tkmr.org/tatsuya/show/344-javascript-rest-jester-ver1-3-jsonp
で自分でやったことを記録してみました。
まず、scaffold_resource でコントローラ(とビュー)を生成。
ruby script/generate scaffold_resource user user_type_cd:decimal name:string
これでusers_controllerが作成されます(user_controllerじゃない)。
JSONでアクセスできるようにコントローラを変更。
def show @party = Party.find(params[:id]) respond_to do |format| format.html # show.rhtml format.xml { render :xml => @party.to_xml } end end
となっているのを
def show @party = Party.find(params[:id]) respond_to do |format| format.html # show.rhtml format.xml { render :xml => @party.to_xml } format.json { render :json => @party.to_json} end end
という風にJSON用のコードを追加(他のアクションも同じ感じ?でも、destroyとか何を返すべきなのか分かってないっす)。
で、RESTっぽくmethod(GET/POST/PUT/DELETE)でアクションを振り分けてもらうように、config/routes.rbに以下を追加。
map.resources :users
ちなみに map.resource :users でもそれ自体はエラーにならないけど、結局うまく動かなかったのでresourcesの方を使わないと嵌ります。
で、jester-1.3をゲットして、jsファイルをpublic/javascriptsに置いておく。
http://giantrobots.thoughtbot.com/2007/6/11/jester-1-3-jsonic-rest
あとはサーバを起動して、Firebugのconsoleとかから
Base.model("User",{format: "json"}); p1 = User.find(1)
で、p1にはidが1のUserのオブジェクトが得られるはず。