0

私はかなり特定の問題を抱えています。CSVファイルにデータをインポートする必要があるアプリケーションがあります。これはアップロードが処理された後、結果の概要ページがユーザーに表示されます。

CSVファイルを解析する方法はすでにあります。正常に動作します。しかし、そのたった1つのステップ形式:

  1. 新規-フォーム付きのメソッドとerbファイル

  2. CSVファイルを処理するpost後のメソッド=>およびデータはDBにあります。

正常に動作していますが、最初のアップロードで失敗した行を含むCSVファイルも自動的に生成したいと思います。このリンクによると、私はそのための方法を書きました。しかし残念ながら、このアプローチによるユーザーエクスペリエンスはひどいものです。エラーのある新しいCSVファイルを生成すると、次のメソッドによって呼び出されたダウンロードポップアップが送信されるためです。

send_data errCSV, :type => 'text/csv; charset=iso-8859-1; header=present', :disposition => "attachment; filename=#{errFile}.csv"

2番目の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の使用を検討しているだけです。

4

1 に答える 1

1

2番目のPOSTメソッドを指定できますか?私はその問題を完全には理解していないと思います。

ちなみに、リクエスト間で情報を保持したいが、生成されたcsvを使用したくない場合は、DB、セッション、またはフラッシュを使用する必要があります

編集:

この場合、セッションを使用できます。必要なのは次のことだけです。

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 に答える