2008-09-11 36 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 
2

Rails的monkeypatches你會在乎有#to_json方法最多的事。

關於我的頭頂,您可以對散列,數組和ActiveRecord對象進行操作,它應該覆蓋您可能需要的大約95%的用例。如果你有自己的自定義對象,那麼爲它們編寫你自己的to_json方法是微不足道的,它可以將數據插入散列,然後返回jsonized散列。

+0

monkeypatches?我不知道這意味着什麼,但我可以猜到它是指向大多數(如果不是全部的話)對象提供該方法 – 2008-09-12 16:53:30

+1

它修補現有對象,添加方法或在存在的情況下更改方法。這真的只是動態的語言擴展。 – 2008-12-09 17:20:52

0

ActiveRecord還提供了與JSON進行交互的方法。要從AR對象中創建JSON,只需調用object.to_json。爲了用JSON創建一個AR對象,你應該能夠創建一個新的AR對象,然後調用object.from_json ..就我所知,但這對我並不適用。

相關問題