0

複数の CSV ファイルをアップロードして解析しようとしています。私がこれまでに持っているもの:

私の見解

 <h3>Upload multiple files</h3>  
  <%= form_tag({:controller => "multi_uploader", :action => "import"}, :multipart => true) do %>
    <em>Upload a tab-separated .txt file to generate new rating sets.</em> <hr/>
    <%= file_field_tag :file_1 %>
     <hr/>
    <%= file_field_tag :file_2 %>
     <hr/>
    <%= file_field_tag :file_3 %>
     <hr/>
    <%= file_field_tag :file_4 %>
     <hr/>
    <%= file_field_tag :file_5 %>
     <hr/>
    <%= file_field_tag :file_6 %>
    <hr/>
    <%= submit_tag "Import Data", :class => "btn btn-link"%>
    <% end %>

私のコントローラー:

 def import
    unless params[:file_1].nil?
    file_1 = params[:file_1]
    RatingSet.multi_uploader(file_1)
  end
  unless params[:file_2].nil?
    file_2 = params[:file_2]
    RatingSet.multi_uploader(file_2)
  end
  unless params[:file_3].nil?
    file_3 = params[:file_3]
    RatingSet.multi_uploader(file_3)
  end
  unless params[:file_4].nil?
    file_4 = params[:file_4]
    RatingSet.multi_uploader(file_4)
  end
  unless params[:file_5].nil?
    file_5 = params[:file_5]
    RatingSet.multi_uploader(file_5)
  end
  unless params[:file_6].nil?
    file_6 = params[:file_6]
    RatingSet.multi_uploader(file_6)
  end
    redirect_to "/multi_uploader", :flash => { :notice => "Successfully Uploaded." }
  end

ファイルをインポートするための私のモデルの方法:

 def self.multi_uploader(file)
    upload = File.open(file.path)  
    #Parse file and save data to db. 
  end

私のmulti_uploader方法では、ファイルがアップロードされるはずのカテゴリのキーを (ファイルから) 解析します。単一のファイルをアップロードするとすべてが期待どおりに機能しますが、複数のファイルをアップロードすると、すべてのファイルのコンテンツが複数のカテゴリではなく単一のカテゴリに保存されます。個々のファイルではなく、すべてのファイルが単一のファイルとして扱われているようです。各ファイルを個別にアップロードするには、何を変更できますか?

4

1 に答える 1

0

まあ、私が見る限り。この動作は実際には発生しないはずです。少し汚れているように見えるので、このコードを実行する別の方法をお勧めします。

def import
    (1..x).each do |i| #with x being the max number of files uploaded at the same time
         RatingSet.multi_uploader(params["file_#{i}".to_sym])
    end
    redirect_to "/multi_uploader", :flash => { :notice => "Successfully Uploaded." }
end

いずれにせよ、これで問題が解決するわけではありません。正直なところ、なぜこれが起こっているのかわかりません。

アップデート:

<%= f.file_field :file, :multiple => true %>複数の file_tags の代わりに: を使用することを検討しましたか?

于 2013-09-11T06:29:53.230 に答える