我正在尝试构建一个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"
感谢您阅读
答案 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"