我有一个非常具体的问题。我有应用程序,我需要在CSV文件中导入数据,这是在上传处理后,然后向用户显示包含结果的概述页面。
我已经有了解析CSV文件的方法。它运作正常。但它只是一步形式:
新方法和带有表单的erb文件
处理CSV文件的帖子后的方法=>数据在DB中。
它工作正常,但我还想自动生成一个CSV文件,其中的行在首次上传时失败。根据这个link,我已经为此编写了方法。但不幸的是,这种方法的用户体验非常糟糕。因为,如果您生成有错误的新CSV文件,它只会发送一个由方法调用的下载弹出窗口:
send_data errCSV, :type => 'text/csv; charset=iso-8859-1; header=present', :disposition => "attachment; filename=#{errFile}.csv"
在第二个POST方法之后,我想将重定向添加到另一个视图,其中包含类似“导入概述”标题和错误数,正确行数以及调用此临时可下载文件的方法的链接
然后我的问题是,如何有效地保存CSV而不通过3步向导?
修改
def upload_csv
#method which render form
end
def import_csv
#method implemented logic for parsing CSV
#POST METHOD
redirect_to overview_method_view
end
def overview
#method which could create a overview
end
我需要在import_csv和overview之间传递值(假设一个数组)。我不想保存任何文件。只考虑使用Session。
答案 0 :(得分:1)
你可以指定哪个是你的第二个POST方法吗?我认为我不完全理解这个问题。
顺便说一下,如果你想在请求之间保留信息但你不想使用生成的csv,你将不得不使用数据库,会话或闪存
修改强>
在这种情况下你可以使用会话,你只需要这样做:
def import_csv
#Business logic
session[:csv_info] = ... #What you want to be persisted between request
redirect_to overview_method_view
end
def overview
@whatever = session[:csv_info]
end
希望它有所帮助!