2008-09-11 4 views

答えて

10

Railsリソースは、モデルにRESTfulなインターフェイスを提供します。どれどれ。

モデル

class Contact < ActiveRecord::Base 
    ... 
end 

ルート

map.resources :contacts 

コントローラ

class ContactsController < ApplicationController 
    ... 
    def show 
    @contact = Contact.find(params[:id] 

    respond_to do |format| 
     format.html 
     format.xml {render :xml => @contact} 
     format.js {render :json => @contact.json} 
    end 
    end 
    ... 
end 

これは

を必要と応答の種類を取得するために特別なメソッドを定義することなく、あなたのAPIインタフェースを提供します

など

/contacts/1 # Responds with regular html page 

/contacts/1.xml # Responds with xml output of Contact.find(1) and its attributes 

/contacts/1.js # Responds with json output of Contact.find(1) and its attributes 
+0

すばらしい答え!もし私がそれをRails 3に更新することができたら、jsonメソッドはto_jsonのようです。少なくともそれは私のために働いたものです。つまり、@ contact.to_json – codedog

2

Railsは、あなたが#to_json方法を有することは気にしたいほとんどのものをmonkeypatches。

ハッシュ、配列、ActiveRecordオブジェクトのために、私の頭の上から外してください。これはあなたが望む可能性のある約95%をカバーするはずです。独自のカスタムオブジェクトを持っている場合は、独自のto_jsonメソッドを書くことは自明です。データをハッシュにジャムさせ、次にjsonizedハッシュを返すことができます。

+0

monkeypatches?私はそれが何を意味するのか分かりませんが、私はオブジェクトをすべてではないにしても、そのメソッドをほとんどのものに提供することを指していると推測できます。 –

+1

既存のオブジェクトにパッチを当てたり、メソッドを追加したり、これは本当に動的言語拡張です。 –

0

ActiveRecordは、JSONとやりとりするためのメソッドも提供します。 ARオブジェクトからJSONを作成するには、単にobject.to_jsonを呼び出します。 JSONからARオブジェクトを作成するには、新しいARオブジェクトを作成してからobject.from_jsonを呼び出せなくてはなりません。わかっていますが、これはうまくいきませんでした。

関連する問題