1

私はrubyとrailsに慣れていないので、rubyの構文と構造を理解しようとしています。タスクとレーキを使用して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 '='
    }  
     ^
4

2 に答える 2

2

create関数のパラメーターとして指定するハッシュを囲む括弧がありません。

    Voter.create({
      :last_name => row[0]
    })

括弧と中括弧の両方をスキップすることもできます

    Voter.create :last_name => row[0]
于 2012-10-28T20:35:41.577 に答える
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ブロックを終了していますが、終了していません。 したがって、余分に追加することで、このエラーは削除されます。endtaskend

お役に立てれば。

于 2012-10-31T04:40:24.923 に答える