9

いくつかのドル金額フィールドを持つ Ruby アプリケーションで CSV ダウンロードを作成しています。これらのフィールドには、$35,456 のような通貨形式のデータがあり、そのようなデータが CSV で受信されると、2 つのフィールドに分割され、カンマの後のデータが CSV の次の列に移動されます。

これがCSVをレンダリングする私のコードです

Sell Date, Sell Amount
- @rows.each do |row|
  = "#{row[0]},#{number_to_currency(row[1], :precision => 2)}"

CSVを返すために使用されるアクションは次のとおりです

def fifolog
  @rows = Report.fifolog()
respond_to do |format|
  format.csv { render csv: {:rows =>@rows }}
end
end

ルビーで「、」をエスケープするために使用できるエスケープ文字はありますか

ありがとう

4

2 に答える 2

6

コンマを含む値を二重引用符で囲みます。

"$35,456"

編集: FasterCSV を使用して、次の行を変更します。

respond_to do |format|
  format.csv { render csv: {:rows =>@rows }}

csv_data = FasterCSV.generate do |csv| 
    csv << ["Sell Date", "Sell Amount"] 

    @rows.each do |row| 
      csv << [row[0],number_to_currency(row[1], :precision => 2)] 
    end 
  end 

  send_data csv_data, 
            :type => 'text/csv', 
            :disposition => "attachment; filename=file.csv"
于 2012-09-07T13:06:48.260 に答える