意外的结束语法错误

时间:2012-10-28 22:10:14

标签: ruby-on-rails ruby ruby-on-rails-3.2

以下代码:

require 'csv'

desc "Import Voters from CSV File"
task :import => [:environment] do

  file ="db/GOTV.csv"

  CSV.foreach(file, :headers => true) do |row|
    Voter.create({
      :last_name => row[0], 
      :first_name => row[1],
      :middle_name => row[2],
      :name_suffix => row[3],
      :primary_address => row[4],
      :primary_city => row[5],
      :primary_state => row[6],
      :primary_zip => row[7],
      :primary_zip4 => row[8],
      :primary_unit => row[9],
      :primary_unit_number => row[10],
      :phone_number => row[11],
      :phone_code => row[12],
      :gender => row[13],
      :party_code => row[14],
      :voter_score => row[15],
      :congressional_district => row[16],
      :house_district => row[17],
      :senate_district => row[18],
      :county_name => row[19],
      :voter_key => row[20],
      :household_id => row[21],
      :client_id => row[22],
      :state_voter_id => row[23]
    })
  end

...抛出以下错误:

/Users/ecumbee/Desktop/cloudvoters/lib/tasks/import.rake:35: syntax error, unexpected $end, expecting kEND
  end
     ^

我已经尝试删除了结尾,这会引发同样的错误,我尝试添加另一个结果,但它会导致无法编译错误。

编辑: 添加第二个结束语句时出错

Don't know how to build task 'db:import'

3 个答案:

答案 0 :(得分:2)

代码中的end适用于CSV.foreach ... do块。您错过了end阻止的另一个task ... to

如果仍然出现语法错误,请修改您的问题并发布该错误。

答案 1 :(得分:2)

在错误消息中,$end表示输入文件的结尾,而kEND表示end关键字,因此它抱怨缺少end,不是额外的。

如果在添加另一个end后仍然出现语法错误,则表示与此错误无关。

答案 2 :(得分:1)

我知道你说你试图添加另一个结果并没有帮助,但你的文件存在的问题是它缺少将结束任务的end关键字

task :import => [:environment] do

然后,您可以在添加缺失的end后提供有关错误的详细信息吗?