CSVファイルを解析するためにこれがあります:
csv_file = CSV.parse(
file.read(),
headers: true,
header_converters: :symbol
)
動作しますが、エンコーディングタイプを指定したいので{encoding: 'UTF-8'}
、以下のようにreadメソッドに:を追加します。
csv_file = CSV.parse(
file.read({encoding: 'UTF-8'}),
headers: true,
header_converters: :symbol
)
しかし、私はこのエラーを受け取ります:ハッシュを整数に変換できません
何が悪いのかわかりません。ドキュメントを確認しましたが、そのようにエンコーディングを渡すことができると書かれていますが、最初の引数としてファイルが必要なので、そこでストールする可能性がありますが、どのファイルが読み取られているかはすでにわかっているので、問題ないはずです。
どうすればこれを解決できますか?
アップデート:
私は以下に更新しました:
def import
if params[:import_coasters]
file = params[:import_coasters][:file]
Park.import_from_csv(file)
def self.import_from_csv(file)
Park.destroy_all
と
csv_file = CSV.parse(
File.read(file, {encoding: 'UTF-8'}),
headers: true,
header_converters: :symbol
)
しかし、次のエラーが発生します。
ActionDispatch :: Http::UploadedFileを文字列に変換できません