Ruby on rails RubyonRails—将XML存储在临时文件中
我希望能够将xml存储到一个临时文件中,然后将其发送到另一个控制器中的另一个方法进行处理。目前,它将不允许我读取文件,一旦发送,因为它是一个私有方法 控制器#1 控制器#2 版本#1 给我这个错误:未定义“File:0x6ebfb00”的“read”方法:String 版本#2Ruby on rails RubyonRails—将XML存储在临时文件中,ruby-on-rails,ruby,xml,nokogiri,temporary-files,Ruby On Rails,Ruby,Xml,Nokogiri,Temporary Files,我希望能够将xml存储到一个临时文件中,然后将其发送到另一个控制器中的另一个方法进行处理。目前,它将不允许我读取文件,一旦发送,因为它是一个私有方法 控制器#1 控制器#2 版本#1 给我这个错误:未定义“File:0x6ebfb00”的“read”方法:String 版本#2 给我这个错误:私有方法'open'调用了“#File:0x6a12bd8”:String似乎您认为参数可以是对象,由于Rails的魔力,这是可以原谅的。实际上 所以这里的问题是,当您使用参数'file'重定向时,它会将T
给我这个错误:私有方法'open'调用了“#File:0x6a12bd8”:String似乎您认为参数可以是对象,由于Rails的魔力,这是可以原谅的。实际上 所以这里的问题是,当您使用参数'file'重定向时,它会将Tempfile对象变成字符串。这就是为什么错误会告诉您,对于字符串,没有称为read或open的可访问方法。我看到一些选择:
# Controller 1
xml = @builder.to_xml
redirect_to upload_xml_admin_events_path(:xml => xml)
# Controller 2
@xml = Nokogiri::XML(params[:xml])
如果您希望该文件是真正临时的,在选项2中,您可以使用XmlFile.delete(params[:xml])将其删除,同时将其加载到@xml。我非常喜欢您的数据库想法,谢谢!有时候我只是需要别人的意见
xml = params[:file].read
xmldoc = Nokogiri::XML(xml)
xml = params[:file]
xml.open
xmldoc = Nokogiri::XML(xml)
# Controller 1
@xml = XmlFile.new(@builder.to_xml)
redirect_to upload_xml_admin_events_path(:xml => @xml) #implicitly @xml.to_s
# Controller 2
@xml = XmlFile.find(params[:xml])
Nokogiri::XML(@xml)
# Controller 1
xml = @builder.to_xml
redirect_to upload_xml_admin_events_path(:xml => xml)
# Controller 2
@xml = Nokogiri::XML(params[:xml])