2012-01-16 50 views
0

我有一個Rails(3.x)應用程序,我試圖通過REST Web服務API與桌面應用程序(C#.net)進行通信。Rails 3.x中的REST Web服務

我能實現所有的GET請求和他們都做工精細,

然後,我必須發表資料到我的Rails控制器的這一要求。由於我正在開發一個應用程序餐廳我的POST方法將會像如下

<bill> 
    <user_id>1</user_id> 
    <table>Table1</table> 
    <items> 
    <item> 
    <name>BEER</name> 
    <price>200</price> 
    </item> 
    <item> 
    <name>BREAD</name> 
    <price>10</price> 
    </item> 
    </items> 
</bill> 

正如你所看到的,這<items> </items>將個人<item></item>,元素的循環,並有可能item元素的「N」數字

我的問題是,我將能夠創建這些類型的XML並將其發佈到Rails控制器。

但我怎麼能從控制器讀取值?

我想我可以讀出的首部分爲

user_id = params[:bill][:user_id] 
table = params[:bill][:table] 

但我不知道如何閱讀<items>元素。我在Rails 3.x上運行。

+0

在你的日誌,你怎麼看,當您發表您的請求參數? – alex 2012-01-16 19:21:13

回答

0

我會盡量利用Nokogiri::XML,因此有一個Ruby的Ruby對象表示,然後可以輕鬆訪問。

# your xml lives in params['body'] 
body = Nokogiri::XML::DocumentFragment.parse(params['body']) 
body.at("items").children.each do |item| 
    #code goes here 
end 

閱讀關於引入nokogiri這裏它的XML解析功能:http://nokogiri.org/Nokogiri/XML/NodeSet.html