我认为我有以下内容:
<%= 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....
如何更改控制器以避免此错误?
答案 0 :(得分: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文件的路径作为方法的参数。该模型作为应用程序和数据库之间的接口以及应用程序中完成的事情。 View可以显示你的东西,控制器是连接它们的东西。