2014-02-12 47 views
0

我從我的Rails應用程序下載csv文件時遇到問題。Rails下載空的csv文件

首先控制器看起來像這樣;

def report 
    @report = SentMessage.where('user_id = ? AND created_at <= ? AND created_at >= ?', current_user.id, params[:before], params[:after]).order('created_at Desc') 
    respond_to do |format| 
    format.html 
    format.csv do 
     response.headers["Content-Type"]  = "text/csv; charset=UTF-8; header=present" 
     response.headers["Content-Disposition"] = "attachment; filename=sent_messages.csv" 
    end 
    end 
end 

然後我的report.csv.erb文件看起來像這樣;

<%= provide(:title, "Sent Messages") %> 
<div> 
    <div class="panel radius"> <h2 class="text_center">Sent Messages</h2></div> 
    <table class="table table-striped table-bordered table-hoverlarge-12 radius columns large-centered" id="sent_table"> 
     <thead> 
     <tr> 
      <th>To</th> 
      <th>From</th> 
      <th>Message</th> 
      <th>Delivery Report</th> 
      <th>cost</th> 
      <th>Time</th> 
     </tr> 
     </thead> 
     <tbody> 
     <% @report.each do |message| %> 
      <tr> 
       <td><%= message.to %></td> 
       <td><%= message.from %></td> 
       <td><%= message.message %></td> 
       <td><%= message.delivery %></td> 
       <td><%= message.cost %></td> 
       <td><%= message.created_at.to_datetime.strftime("%b %d, %Y %I:%M%P") %></td> 
      </tr> 
     <% end %> 
     </tbody> 
    </table> 
    </div> 
</div> 

當我點擊下載鏈接,下載的文件是除了標頭,展現在report.csv.erb文件只是空的。 可能是什麼問題?

+0

您確定您在「@ report」中有數據嗎? –

+1

不是一個解決方案,而是一個觀察:CSV代表逗號分隔值,但您正試圖在此處編寫HTML。 – zwippie

+0

我只是覺得沒有消息。 要檢查結果,請從控制檯運行查詢並查看它的響應。 – dennis

回答

-1

這樣做可能適合你。

def report 
      @report = SentMessage.where('user_id = ? AND created_at <= ? AND created_at >= ?', current_user.id, params[:before], params[:after]).order('created_at Desc') 
        respond_to do |format| 
          format.html 
          format.csv{ 
      response.headers["Content-Type"] = "text/csv; charset=UTF-8; header=present" 
      response.headers["Content-Disposition"] = "attachment;      filename=sent_messages.csv"} 


         end 
    end 
+2

你只改變了do..end大括號。你如何看待這會有所作爲? –

0

我只是不得不改變鏈接到下載;

<%= link_to "Download CSV", params.merge(format: "csv"), class: "button radius" %> 

和它的工作。