2016-07-28 11 views
0

テーブルからのデータの.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 &quot;先頭と末尾を持っているか

Problem table

お知らせ?しかし、次のものはありませんか?そして、どのように最初のものが追加のヘッダーレス列に分散されていますか?そして最後のものは&quot;を持っていませんが、真ん中に&ampを持っています(もちろん、アンパサンドのために)?

これらの値はすべてReportTypeテーブルのテキストとして格納され、Railsの文字列として渡されますが、私の知る限りどこでもデータ型はまったく異なりますが、テーブルから引き出した。

エクスポートから「レポートタイプ」を選択すると、私のテーブルはどのように素敵ですか?

Good table

ないスキップされたラインか何か!

これらのHTML文字、特に先頭と末尾の二重引用符は、ここで問題の少なくとも一部を引き起こしているようです。私は.gsub('"', '')を使って削除しようとしましたが、これは効果がありません。

これまでに遭遇したことはありますか?そのようなrawを追加することにより、

<%= CSV.generate_line row -%> 

<%=raw CSV.generate_line row -%> 

をそして、それはトリックをした私は、この行を変更 -

+0

あなたのCSVファイルが、HTMLエスケープ機能を有効にしてERBから出てきていると思います。そのようなソースデータには何もないのですか? – tadman

+0

@tadmanうーん...私が知っているわけではない - 私はRailsには少し新しかった - どこを確認するか? – skwidbreth

+0

@tadman - ありがとう、あなたが手伝ってくれました - 下記をご覧ください。 – skwidbreth

答えて

0

おかげで、この上で正しい方向に私を指しているため@tadmanします。すごい!

それでも誰か他の解決策がある場合は、私はそれらを聞いています。

関連する問題