質問させていただきます。
Railsアプリでデータをcsvでダウンロードできる機能を実装したのですが、データの中に"¥"の文字列が含まれていると、csvダウンロードアクションを実行した時に
Encoding::UndefinedConversionError in MasterCosts#index Completed 500 Internal Server Error in 398ms (ActiveRecord: 1.0ms) ActionView::Template::Error (U+00A5 from UTF-8 to Windows-31J): 5: @master_costs.each do |data| 6: csv << data.attributes.values 7: end 8: end.encode('cp932') app/views/master_costs/index.csv.ruby:8:in `encode' app/views/master_costs/index.csv.ruby:8:in `_app_views_master_costs_index_csv_ruby___1491198842395563073_70206090722620'
のエラーが表示されてしまいます...
$ ruby -v 2.3.0 $ rails -v 5.0.0.rc1
コードは現状以下のようになっています
ruby
1require 'csv' 2 3header = @master_costs.attribute_names 4csv_data = CSV.generate('', headers: header, write_headers: true) do |csv| 5 @master_costs.each do |data| 6 csv << data.attributes.values 7 end 8end.encode('cp932') 9
出来上がるcsvファイルはこんな感じです code,name,cost_class,budger_class,deleted_at,created_at,updated_at 1,"あ,""\え",2,A,,2016-06-22 09:17:23 UTC,2016-06-22 09:17:23 UTC 3,dfkjgsl,3,AB,,2016-06-22 09:17:36 UTC,2016-06-22 09:17:36 UTC 6,"あ"",""ええ",2,B,,2016-06-23 05:05:30 UTC,2016-06-23 05:05:30 UTC 23,"あ,""\ええ",2,B,,2016-06-22 09:16:25 UTC,2016-06-22 09:16:25 UTC 87,""""""""""",,,,,////",1,AB,,2016-06-23 07:00:53 UTC,2016-06-23 07:00:53 UTC 89,as iu,2,A,,2016-06-24 01:33:25 UTC,2016-06-24 01:33:25 UTC 90, m/\t,1,B,,2016-06-24 01:34:24 UTC,2016-06-24 01:34:24 UTC 111,111111,1,B,,2016-06-23 08:54:22 UTC,2016-06-23 08:54:22 UTC
このファイルのnameに「¥」が含まれるとエラー発生します
大変恐縮ですが、「¥」をエンコードさせる方法教えてください...
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/24 04:05
2016/06/24 04:28 編集