ruby-on-rails – 如何保存ruby builder生成的xml而不是在rails应用程序中呈现它?

我有一个构建器,在调用create时呈现xml.如何跳过渲染步骤,但将xml保存到文件系统?

def create
    @server = Server.new(params[:server])

    respond_to do |format|
        if @server.save
            flash[:notice] = "Successfully created server."
            format.xml
        else
            render :action => 'new'
        end  
    end
end
最佳答案
XML构建器可以将其数据写入支持<<<<操作符.在你的情况下,String和File对象似乎是最有趣的. 使用字符串看起来像这样:

xml = Builder::XmlMarkup.new  # Uses the default string target
# TODO: Add your tags
xml_data = xml.target!  # Returns the implictly created string target object

file = File.new("my_xml_data_file.xml", "wb")
file.write(xml_data)
file.close

但由于File类支持<<运算符也是如此,您可以将数据直接写入文件:

file = File.new("my_xml_data_file.xml", "wb")
xml = Builder::XmlMarkup.new target: file
# TODO: Add your tags
file.close

有关详细信息,请查看the documentation of XmlMarkup.

转载注明原文:ruby-on-rails – 如何保存ruby builder生成的xml而不是在rails应用程序中呈现它? - 代码日志