我可以使用XML来响应Rails中的HTML请求吗?

时间:2013-04-24 15:12:36

标签: ruby-on-rails xml rendering

我想放入一个简单的API,它使用查询字符串响应GET请求。但我想返回XML,而不是HTML。

我甚至想在浏览器中对此进行测试,这样如果我输入了URL和查询字符串,那么请在响应中查看XML。

我只是通过渲染:text得到它,但我的xml正在做两件事:

1. All tag names are being downcased.

2. My xml is being wrapped in an HTML container (HTML, HEAD, BODY, etc.)

我只需要摆脱那个HTML包装器。

4 个答案:

答案 0 :(得分:2)

这个适用于我:

respond_to do |format|
  format.xml do
    headers['Content-Disposition'] = 'attachment;filename="katalog.xml"'
    render :xml => xml_array.to_xml(:skip_types => true, :root => "Items"),
           :layout => false,
           :content_type => Mime::XML
  end
end

你应该能够用你的字符串替换xml_array.to_xml(:skip_types => true, :root => "Items"),因为.to_xml除了生成一个字符串(并确保它是正确的XML)之外什么都不做。

答案 1 :(得分:1)

您只需使用:

呈现为xml(在控制器中)
render xml: @your_object

答案 2 :(得分:0)

布局错误,仅限:[:action]

这将删除所有布局相关代码。

答案 3 :(得分:0)

在5.2.x上,这是您的操作方式

class UserController < ApplicationController
  def view
    @user = User.find(params[:id])
    render formats: [:xml]
  end
end

在app / views / user / view.xml中具有相应的视图

xml.User do
  xml.name @user.name
end