这似乎是一个非常小的错误,但我找不到任何解决此问题的方法。我正在尝试在我的 rails(3.2) 应用程序(ruby 1.9.3)中使用 CSV gem,但我收到错误“NoMethodError”。我的控制器是:
require 'csv'
def import
file = params[:file] <-- error
CSV.parse(file, :headers => false) do |row|
Event.new(:Ename => row[0], :Edate => row[1], :Elocation => row[2], :Edesc => row[3], :Oname => row[4], :Oemail => row[5], :Odetail => row[6])
end
end
我从用户可以上传 csv 文件的视图中获取此文件。我得到一个 NoMethodError(nil:NilClass 的未定义方法'nil')。我最好的猜测是我使用这种方法是错误的,但是我的下一个问题是如何解析 Csv 数据?我想从我的视图中检索文件,然后将数据解析到数据库中。我怎样才能打开相同的文件?上述方法不正确吗?快速说明一下,我尝试使用“FasterCSV”gem,但得到了“使用标准 FasterCsv 1.9.2 gem”。我不得不从 fastcsv 更改为标准 csv,因为部署到 heroku 的 gem 出现了问题。
忘了给视图文件,
<%= form_tag({:action => :import}, :multipart => true) do %>
<%= file_field_tag 'file' %>
<% end %>
这是基本的。我得到的错误是关于 parse 方法的。我确实查看了文档,发现我应该使用一个字符串。但我认为'params [:file]'给了我这个。抱歉,我对 Rails 比较陌生..