activerecord to_xml将xml版本更新为1.1

时间:2011-07-23 00:59:00

标签: ruby-on-rails jruby

to_xml到activerecord包括xml声明,如下所示。

<?xml version="1.0" encoding="UTF-8"?>

我们如何将版本更改为1.1并更改编码?

我们可以使用to_xml(:skip_instruct => true)完全隐藏声明。

1 个答案:

答案 0 :(得分:1)

如果您正在使用restfull路由,那么访问some_url.xml将为您提供您所描述的结果。如果这是您为xml提供服务的方式,那么您可以定义自己的xml构建器模板。它的工作方式与视图的工作方式完全相同 这是一个例子

您的控制器操作

  def show
    @obj = SomeClass.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :layout => false }
    end
  end

然后在您通常放置show.html.erb的views文件夹中创建一个show.xml.builder文件,其内容看起来像这样

xml.someclass do
  xml.id(@obj.id)
  xml.name(@obj.name)
end

在此模板中,您可以添加<?xml version="1.1" encoding="UTF-8"?>或您要添加的任何xml声明

<强>更新 您不需要提供视图,只需要RESTfull路由,控制器和具有响应XML格式的respond_to的操作。 Rails会选择你要渲染的xml,并在以与视图工作完全相同的方式命名的视图文件夹中查找.xml.erb文件