2012-12-18 44 views
0

我正在用Adcourier做一些工作。他們向我發送一個帶有一些工作數據的xml源,即job_title,job_description等等。將XML饋入到Rails對象

我想在我的應用程序中爲他們提供一個網址,即myapp:3000/job/inbox。當他們將供稿發送到該URL時,它將採集數據並將其存儲在我已經創建的Job對象的數據庫中。

  1. 這種結構的最佳方式是什麼?我很新的MVC,我不知道這樣的事情會適合。

  2. 如何獲得解析來自外部源的XML饋送的操作?我使用Nokogiri來處理本地XMl文檔,但從來沒有來自Feed的。

我正在考慮使用http://api.rubyonrails.org/classes/ActionDispatch/Request.html#method-i-raw_post來處理帖子。對此有任何想法嗎?

+0

如果它是典型的提要(例如Atom或RSS),那麼您請求它。 Feed實際上並未被推送。 –

+0

正如Adcourier頁面中提到的那樣,Feed已從其結尾發送或提交。 _數據將通過HTTP POST_ –

回答

1

在你的工作控制器中添加一個動作收件箱,它從發佈請求中獲取正確的參數並保存它們(或者你需要做的任何事情)。

def inbox 
    data = Xml::ParseStuff(params[:data]) 
    title = data[:title] 
    description = data[:description] 
    if Job.create(:title => title, :description => description) 
    render :string => "Thanks!" 
    else 
    render :string => "Data was not valid :(" 
    end 
end 

下一頁設置你的routes.rb送崗位要求該URL到正確的位置

resources :jobs do 
    collection do 
    post 'inbox' 
    end 
end 

注意我只是做了XML解析的東西在這裏,只是谷歌了一下,找到了什麼是解析你的請求的最佳解決方案/寶石。

+1

發送到第三方接口感謝Vikko,這無疑有助於澄清結構。是的,我很高興研究XML的東西。看來request.raw_post()會打開數據,Nokogiri會讓我解析它,所以在這方面看起來都很好。 感謝您花時間幫助。 –

+0

是的,你可以使用'data = Nokogiri :: XML(request.body.read)'例如。 – Vikko