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>
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またはデータが何であるかがわからない場合、の行の内容以外の出力がどうなるかを判断するのは困難です。データ。