我正在开发一个上传excel文件的rails引擎,验证它,如果没有错误,它将把它保存到数据库。
现在,当用户安装引擎而不是转到引擎提供的路线时。他将有一个表单来上传excel文件。页面上有两个按钮,即upload
和validate
。
一旦用户选择了该文件,并且当他点击上传时,我希望该文件仅上传并且不会保存在db中。一旦我收到消息文件上传成功,我将验证文件。如果它是有效数据的有效excel文件,则将保存到db。现在我没有得到如何去做。我在上传csv
和excel
文件时看过这个Railscasts视频,但在这里他正在执行验证并使用import
操作保存操作,但我希望在用户点击时进行验证和保存操作在validate
行动。 This Questions似乎与我的问题相似,但我不知道如何访问上传的文件。我不希望该文件保存在数据库中。我的意思是当用户点击上传按钮时,该文件仅上传而未保存。比我将验证该文件并将其内容保存到db。
对于一些专家来说,这似乎是非常容易和简单的问题,但我对rails很新,我不知道如何去做。
有人请帮我提供示例代码,以便我能够理解工作流程。另请注意,上传和验证操作都在同一页面上。因此,当文件上传时,它需要临时存储在某处,这是我面临的第一个问题。如果有人可以通过上传excel文件的示例代码告诉我工作流程,我可以完成所有任务。我在这里只有问题,因为上传和验证操作都在同一页面上,所以在上传请求之后它需要在该页面上,以便我可以验证该文件。
任何帮助都会受到赞赏,我在轨道上很初学,在这里真的很困惑。
答案 0 :(得分:0)
两个选项:
编写代码以上传文件并保存到DB,validated
列设置为false。然后验证'按钮将找到未经验证的文件,对其进行验证并将validated
设置为true
。您可以定期删除某个年龄段的未经验证的文件。如果这样做,请使用像Paperclip这样的辅助宝石。
放弃文件上传框架,只需手动将上传的文件保存到Tempfile.new 'spreadsheet'
即可。 This guide将指导您完成该操作。将该文件名保存到session并使用它在以后进行验证。当您最终准备继续使用DB时,请再次考虑使用帮助程序gem。