如何保存生成的Ruby的Ruby生成器,而不是在rails应用程序中呈现它?
我有一个构建器,当调用create时呈现xml。如何跳过渲染步骤,但将xml保存到文件系统?如何保存生成的Ruby的Ruby生成器,而不是在rails应用程序中呈现它?
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。
这太好了。您还可以创建一个路径将所有xml存储到给定文件夹中,以便组织应用程序。
file = File.new("some_path/my_xml_data_file.xml", "w")
谢谢丹尼尔
[使用Rails保存XML文件]的能不能请您告诉我这个原因 file = File.new(“xml/experiment.xml”,“w”) #为xml创建构建器文件 xml = Builder :: XmlMarkup.new:target => file #xml标签 xml.instruct! xml.EXPERIMENT_SET { xml.alias( “#{@ experiment.alias}”) xml.center_name “#{@experiment.center_name}” } 我得到这样
可能重复(http://stackoverflow.com/questions/4163385/saving-xml-files-with-rails) – 2010-12-22 14:18:10