5

FasterCSV と rake db:seeds の移行に問題があります。次のseeds.rbデータで、「rake aborted! Unquoted fields do not allow \r or \n (line 2)」というエラーが表示されます。

require 'csv' 

directory = "db/init_data/"

file_name = "gardenzing020812.csv"
path_to_file = directory + file_name
puts 'Loading Plant records'
# Pre-load all Plant records
n=0
CSV.foreach(path_to_file) do |row|
  Plant.create! :name => row[1],
  :plant_type => row[3],
  :group => row[2],
  :image_path => row[45],
  :height => row[5],
  :sow_inside_outside => row[8]
n=n+1
end                 

この問題の解決策を探したところ、多くの人にとって UTF-8 エンコーディングの問題であることがわかりました。iconv と :encoding => 'u' を要求しようとしましたが、「UTF-8 の無効なバイト シーケンス」というエラーが表示されます。

私は初心者であり、クラックする必要があるのが本当にエンコーディングの問題であるかどうかを判断できません (これを実行しようとして失敗しました。そうであれば、実際にいくつかのガイダンスを使用できます)。私は単純な失敗を犯し、seeds.rb とおそらく私の Excel -> csv ファイルの設定方法に何か問題があったと感じています。csv ファイルに悪いデータや厄介なデータはありません。これは単純な 1 語の文字列、テキスト、および整数です。助けてください!

4

3 に答える 3

5

csv ですべての書式設定をオフにするのと同じくらい簡単でした。Excel は、csv ファイルに保存した後、多くの書式設定を保持する習慣があるようで、これが失敗の原因でした。新しいcsvファイルに書式設定なしですべてのデータをコピーして貼り付けた後、問題ありませんでした。

于 2012-02-10T16:03:22.267 に答える
5

String.encode(universal_newline: true)代わりに gsubを使用してください。CRLF と CR を LF に変換します # 常に \n で改行します

于 2014-12-31T07:21:41.127 に答える
1

コメントするほどの評判はありませんが、このエラーを昼夜を問わず長い間ウェブで調べていて、最終的にコメントで解決策を見つけたと言いたいです。

すべての値を引用符で囲むと、ようやく機能するようになりました。

編集:答えへのリンク!!! Rails FasterCSV "引用符で囲まれていないフィールドは \r または \n を許可しません"

于 2014-12-17T23:44:24.403 に答える