将HTTP POST存储到变量中的rails

时间:2015-05-11 23:56:36

标签: ruby-on-rails xml http-post

我正在尝试构建一个rails应用程序来接收带有巨大XML负载的HTTP帖子。目标是解析XML并将部分内容存储到数据库中。我的第一个目标是能够将XML内容存储到变量中并逐行解析变量。从这里提供的Q& A,我能够使用以下代码来接收HTTP Post。

问题是rails app正在将XML内容直接吐回浏览器。我只是希望rails应用程序接收XML,存储并返回200 ok到浏览器。我怎么能做到这一点?

路线

post '/request' => 'application#receives_data'

控制器

def receives_data
  myXMLPost = render :text => request.raw_post
end

当我尝试以下代码时

def receives_data
  myXMLPost = request.raw_post
end

我在development.log

中收到此错误
  

ActionView::MissingTemplate (Missing template application/receives_data with {:locale=>[:en], :formats=>[:html, :text, :js, :css, :ics, :csv, :vcf, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in: * "/opt/rails/CCH/app/views"

感谢您阅读

1 个答案:

答案 0 :(得分:0)

 render :text => request.raw_post

这部分说"将原始XML文本的文本呈现给浏览器" - 所以如果你不想渲染XML - 那么就没有这条线。

如果你想渲染一个200,那么只需渲染一个200。 您可以使用header-only render

执行此操作
head :success

这样:

def receives_data
  myXMLPost = request.raw_post
  head :success
end

"创建XML"这是一个我将留给读者的练习(那是你)...它是轨道的一个非常标准的部分,这意味着它将被轨道上的标准教程覆盖....我建议你做一些关于google for rails教程的研究,这些教程涉及xml,例如" rails tutorials xml"