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のオブジェクトが得られるはず。