我是ruby和rails的新手,所以我仍然试图处理ruby的语法和结构。我正在关注a tutorial使用任务和rake导入csv文件。我不断收到语法错误。我不确定我缺少什么,我看不出示例和我的代码之间有任何区别。
require 'csv'
desc "Import Voters from CSV File"
task :import => [:environment] do
file ="db/my.csv"
CSV.foreach(file, :headers => true) do |row|
Voter.create{
:last_name => row[0]
}
end
(See full trace by running task with --trace)
Erics-MacBook-Air:cloudvoters ecumbee$ rake db:import --trace
rake aborted!
/Users/ecumbee/Desktop/cloudvoters/lib/tasks/import.rake:11: syntax error, unexpected tASSOC, expecting '}'
:last_name => row[0],
^
/Users/ecumbee/Desktop/cloudvoters/lib/tasks/import.rake:12: syntax error, unexpected '}', expecting '='
}
^
答案 0 :(得分:2)
你错过了一个括号,它将你给出的哈希作为创建函数的参数包围
Voter.create({
:last_name => row[0]
})
您也可以跳过括号和&大括号
Voter.create :last_name => row[0]
答案 1 :(得分:1)
正如@pjam指出的那样,你必须在大括号之前使用括号,或者同时跳过这两个括号。
例如。Voter.create :last_name => row[0]
与unexpected $end, expecting kEND end
相关的其他问题是您缺少end
require 'csv'
desc "Import Voters from CSV File"
task :import => [:environment] do
file ="db/my.csv"
CSV.foreach(file, :headers => true) do |row|
Voter.create{
:last_name => row[0]
}
end
您将在最后一行使用CSV.foreach
结束end
阻止,但不会结束task
因此,通过添加额外的end
,此错误将被删除。
希望这有帮助。