2012-10-28 88 views
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' 

回答

2

在錯誤消息,$end是指輸入文件的末尾,而kENDend關鍵字,所以它在抱怨缺少end,不是多餘的。

如果在添加另一個end後仍然出現語法錯誤,則與此錯誤無關。

1

我知道你說你嘗試添加另一端,並沒有幫助,但你的文件的問題是,它缺少end時關鍵字,將結束任務

task :import => [:environment] do

然後,你可以給有關,一旦你添加缺少的end你得到錯誤的詳細信息?

2

代碼中的end代表CSV.foreach ... do區塊。對於task ... to區塊,您錯過了另一個end

如果仍然給您一個語法錯誤,請編輯您的問題併發布該錯誤代替。

相關問題