我是Rails的新手,我已经想出如何从我的数据库导出结果,但是我在从CSV文件创建新记录时遇到问题。使用下面列出的代码,我希望能够导入CSV文件并使用来自用户的会话数据填充最后两列。现在我只是插入一个静态数字来试图让它工作。我目前收到“无法将ActionDispatch :: Http :: UploadedFile转换为String”作为错误消息
名称,任务,expected_results,require_id 测试名称1,打开文件,打开,t 测试名称2,读取文件,读取,t 测试名称3,关闭文件,关闭,f
def csv_import
file = params[:file]
FasterCSV.foreach(file,{:headers => true, :row_sep => :auto}) do |row|
Script.create!(:name => row[0],
:task => row[1],
:expected_results => row[2],
:require_id => row[3],
:department_id => 1,
:category_id => 1)
end
end
<%=form_tag '/script_admin/csv_import', :multipart => true do%>
<%= file_field_tag "file" %><br/>
<%= submit_tag("Import") %>
<% end %>
class CreateScripts < ActiveRecord::Migration
def self.up
create_table :scripts do |t|
t.integer :department_id, :null => false
t.integer :category_id, :null => false
t.string :name, :null => false
t.string :task, :null => false
t.string :expected_results, :null => false
t.boolean :require_id, :null => false, :default => "t"
t.timestamps
end
end
def self.down
drop_table :scripts
端 端
对此有任何帮助可以表示赞赏
〜凯尔
答案 0 :(得分:3)
感谢James Gray解决了问题
def csv_import
file = params[:file]
FCSV.new(file.tempfile, :headers => true).each do |row|
Script.create!(:name => row[0],
:task => row[1],
:expected_results => row[2],
:require_id => row[3],
:department_id => 1,
:category_id => 1)
end
end