我有一个构建器,在调用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
答案 0 :(得分:27)
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。
答案 1 :(得分:0)
这太好了。您还可以创建一个路径来存储给定文件夹中的所有xml,以便组织应用程序。
file = File.new("some_path/my_xml_data_file.xml", "w")
谢谢Daniel