我想从CSV文件导入数据,我不想保存该文件。我在这里发现了一个类似的问题:Ruby on Rails - Import Data from a CSV fileRails - 无法从CSV文件导入数据
但是,当我尝试使用此解决方案时出现错误。
我的格式如下:
Import a CSV file
<%= file_field_tag :file %>
<div class="actions form-group" id="button_text">
<p>
<%= button_tag(type: 'submit', class: "btn btn-primary button-submit") do %>
Submit
<% end %>
在新页面中提交这种形式的调用创建动作,创建动作,然后调用行:
Product.import(params[:file])
我有以下在我的模型中导入方法:
def self.import(myfile)
require 'csv'
csv_text = File.read(myfile)
csv = CSV.parse(csv_text, :headers => true)
csv.each do |row|
end
end
其中'myfile'是params [:file]。
我知道我没有对数据做任何事情。我得到一个错误,行csv_text = File.read(myfile)
这是:没有这样的文件或目录@ rb_sysopen - X.csv
当寻找一个解决方案,我看到.path被使用。如果我将此行更改为csv_text = File.read(myfile.path)
,则会出现错误:“X.csv”的未定义方法`路径':字符串
任何人都可以帮忙吗?我觉得我必须非常接近解决方案,但是我只是在这两个错误之间继续前进。是否有可能从csv获取数据而不先保存它?
感谢您的时间
http://api.rubyonrails.org/classes/ActionDispatch/Http/UploadedFile.html – amtest
对不起,你能解释一切吗?我无法得到这个工作,.temp文件是未定义的文件,这是一个字符串 – JungleBook