2014-02-12 3 views
0

내 레일 앱에서 CSV 파일을 다운로드 할 때 문제가 있습니다.레일이 빈 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" %> 

에 그리고 그것은했다.

관련 문제