0

我有一个非常具体的问题。我有应用程序,我需要在 CSV 文件中导入数据,这是在上传处理后,然后带有结果的概览页面显示给用户。

我已经有了如何解析 CSV 文件的方法。它工作正常。但它只是一个步骤形式:

  1. 新 - 方法和带有表单的 erb 文件

  2. post后处理CSV文件的方法=>并且数据在DB中。

它工作正常,但我还想自动生成一个 CSV 文件,其中包含在首次上传时失败的行。根据此链接,我已经为此编写了方法。但不幸的是,这种方法的用户体验很糟糕。因为,如果您生成带有错误的新 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 和概览之间传递值(假设是一个数组)。我不想保存任何文件。只是考虑使用 Session。

4

1 回答 1

1

你能指定哪个是你的第二个 POST 方法吗?我认为我没有完全理解这个问题。

顺便说一句,如果您想在请求之间保留信息但不想使用生成的 csv,则必须使用数据库、会话或闪存

编辑:

在这种情况下,您可以使用 session,您只需要做:

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

希望能帮助到你!

于 2012-07-17T05:25:49.343 回答