1

在我看来,我有以下几点:

<%= 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....

如何更改我的控制器以不引发此错误?

4

1 回答 1

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 文件的路径作为该方法的参数。该模型作为您的应用程序和数据库之间的接口以及在应用程序中完成的事情。视图是用来显示你的东西的,而控制器是连接两者的东西。

于 2013-11-05T15:45:12.323 回答