Rails - 在2step向导中导入CSV文件

时间:2012-07-17 02:55:19

标签: ruby-on-rails ruby-on-rails-3 import ruby-on-rails-3.2 wizard

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

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

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

  2. 处理CSV文件的帖子后的方法=>数据在DB中。

  3. 它工作正常,但我还想自动生成一个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。

1 个答案:

答案 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

希望它有所帮助!