テーブルからのデータの.csvエクスポートが正しくフォーマットされていないRailsアプリケーションで問題が発生しています。すべてのRails - 書式設定文字列が正しくエクスポートされない
まず、ここでは、すべてがの.csvエクスポートを生成するコード...
report_controller.erb
class Admin::ReportController < ApplicationController
def index
@report = Report.all
respond_to do |format|
format.html
format.csv do
headers['Content-Disposition'] = "attachment;
filename=\"report-summary.csv\""
headers['Content-Type'] ||= 'text/csv'
end
end
end
end
index.csv.erb
<%- headers = ["Report Id", "Datetime", "Latitude", "Longitude", "Report Type"] -%>
<%= CSV.generate_line headers -%>
<%- @report.each do |report| -%>
<%- row = [report.id, report.datetime, report.latitude, report.longitude, report.report_type.report_type] -%>
<%= CSV.generate_line row -%>
<%- end -%>
私はこれを構築してたようだったです私はテーブルの最後の列、 'レポートの種類'に到達するまで、正常に動作します。ここではそれが追加されるときに何が起こるかです:その最初のエントリは、HTML "
先頭と末尾を持っているか
お知らせ?しかし、次のものはありませんか?そして、どのように最初のものが追加のヘッダーレス列に分散されていますか?そして最後のものは"
を持っていませんが、真ん中に&
を持っています(もちろん、アンパサンドのために)?
これらの値はすべてReportTypeテーブルのテキストとして格納され、Railsの文字列として渡されますが、私の知る限りどこでもデータ型はまったく異なりますが、テーブルから引き出した。
エクスポートから「レポートタイプ」を選択すると、私のテーブルはどのように素敵ですか?
ないスキップされたラインか何か!
これらのHTML文字、特に先頭と末尾の二重引用符は、ここで問題の少なくとも一部を引き起こしているようです。私は.gsub('"', '')
を使って削除しようとしましたが、これは効果がありません。
これまでに遭遇したことはありますか?そのようなraw
を追加することにより、
<%= CSV.generate_line row -%>
:
<%=raw CSV.generate_line row -%>
をそして、それはトリックをした私は、この行を変更 -
あなたのCSVファイルが、HTMLエスケープ機能を有効にしてERBから出てきていると思います。そのようなソースデータには何もないのですか? – tadman
@tadmanうーん...私が知っているわけではない - 私はRailsには少し新しかった - どこを確認するか? – skwidbreth
@tadman - ありがとう、あなたが手伝ってくれました - 下記をご覧ください。 – skwidbreth