1

私は次のように考えています。

<%= form_tag import_list_path, multipart: true do %>
    <%= file_field_tag(:file) %>
    <%= submit_tag(:Submit) %>
<% end %>

コントローラーにこれがあります:

  def import
    require 'csv'

    csv = CSV.load params[:file].tempfile.read
    CSV.new(csv.tempfile, :col_sep => ",", :return_headers => false).each do |column|
      name_array << column[5]
      end
    redirect_to(:index)
    end

一時的な CSV ファイルをメモリに保存し、それに対していくつかのアクションを実行しようとしています。基本的に、それを使用して、後で Web サービスを使用する際に使用する情報を取得します。

これは私が受け取るエラーです:

cannot load such file -- Column1,Column2,Column3,Column4,Column5,Column6,Column7,etc....

このエラーをスローしないようにコントローラーを変更するにはどうすればよいですか?

4

1 に答える 1

0

それはそれを行う必要があります。

  def import
    require 'csv'

    CSV.new(params[:file].tempfile, :col_sep => ",", :return_headers => false).each do |column|
      name_array << column[5]
      end
    redirect_to(:index)
    end

別の注意: モデルに属するコントローラーにロジックを入れないでください ;)

// データを処理するメソッドをモデルに記述し、そのメソッドのパラメーターとして csv ファイルへのパスのみを参照する必要があります。モデルは、アプリとデータベースの間のインターフェースとして、またアプリで行われることのために存在します。ビューはあなたのものを表示するためにあり、コントローラーは両方を接続するものです。

于 2013-11-05T15:45:12.323 に答える