2012-01-16 45 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