我正在学习Rails,并试图创建一个文件上传页面来处理CSV数据,而不使用我的数据库或模型。我也尽量避免使用任何宝石,如回形针或载波。
我已经取得了一些进展,但由于某种原因,我的代码无法工作。我没有得到显示在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文件拖入数组。
对于ERB的两个不同示例,import.html.erb
文件被使用了两次。实际的文件和实际的代码是什么?
<% @rowarraydisp.each do |row| %>
<%= row %>
<% end %>
将尝试将CSV文件中的子数组row
发送到浏览器,但是,如果不知道ERB或数据是什么,很难说除了一行数据的内容之外的输出是什么。