web-dev-qa-db-ja.com

CSVファイルをRailsにアップロードし、ファイルを保存せずにページに表示するレコードを処理しますか?

Railsを学習中で、データベースやモデルを使用せずにCSVデータを処理するファイルアップロードページを作成しようとしています。また、次のようなgemの使用を避けようとしています。ペーパークリップまたは搬送波。

ある程度の進歩はありましたが、何らかの理由でコードが機能していません。 import.html.erb page.に表示されているCSVファイルにあるレコードを取得できません

ページのアップロードボタン(localhost:3000/upload)をクリックすると、送信後に期待されるページに正しくリダイレ​​クトされますが、ファイルの行が表示されません。

ページにCSVファイルのレコードが表示されない理由を誰かが知っていますか?

アップロードファイルビュー(index.html.erb):

<%= form_tag({:action => :import}, multipart: true) do %>
  <%= file_field_tag :file %>
  <%= submit_tag( "Import" ) %>
<% end %>

コントローラー(upload_controller.rb):

class UploadController < ApplicationController
  def index
  end

  def import
    rowarray = Array.new
    myfile = params[:file]

    CSV.foreach(myfile.path) do |row|
      rowarray << row
      @rowarraydisp = rowarray
    end
  end
end

結果ビュー(import.html.erb):

<% @rowarraydisp.each do |row| %>
  <%= row %>
<% end %>
<h1>File has been uploaded. Check</h1>
16
Horse Voice
CSV.foreach(myfile.path) do |row|
  rowarray << row
  @rowarraydisp = rowarray
end

書く必要があります:

@rowarraydisp = CSV.read(myfile.path)

CSV.readのドキュメントによると:

CSVファイルを配列の配列にスラップするために使用します。

import.html.erbファイルは、ERBの2つの異なる例で2回使用されます。実際のファイルと実際のコードは何ですか?

<% @rowarraydisp.each do |row| %>
  <%= row %>
<% end %>

サブ配列rowをCSVファイルからブラウザに送信しようとしますが、そのERBまたはデータが何であるかがわからない場合、の行の内容以外の出力がどうなるかを判断するのは困難です。データ。

13
the Tin Man