ruby-on-rails
  • csv
  • xls
  • 2013-04-29 82 views 1 likes 
    1

    我的用戶可以生成一些數據的報告,並決定他們想要的格式。Rails 3 CSV和XLS導出不提供文件擴展名

    他們可以選擇HTML,CSV或XLS

    這是表單(省略了數據的東西,這只是格式選擇)

    <%= form_tag "/report", :method => :get %> 
        Format <select id='format' name='format'> 
           <option value='html' selected='selected'>View in browser (HTML)</option> 
           <option value='csv'>Export to CSV file</option> 
           <option value='xls'>Export to exel (XLS)</option> 
          </select> 
    
    <%= submit_tag "Make report", :class => 'submit' %> 
    

    這種形式進入這個動作

    def report 
        #...Again omitting data stuff 
        respond_to do |format| 
         format.html 
         format.csv 
         format.xls 
        end 
        end 
    

    我有相應的視圖文件。

    report.xls.erb

    在我的日誌我得到

    Processing by ..Controller#report as XLS 
    

    但是,瀏覽器下載沒有擴展文件。

    如果我將form_tag行更改爲此。

    <%= form_tag "/report.xls", :method => :get %> 
    

    該文件獲得.xls擴展名。

    我已經設置了XLS mime_types

    我怎樣才能設置表單的格式?

    回答

    6

    這是從不同的question

    您可以設置標題來告訴文件的瀏覽器名稱。

    format.xls do 
        response.headers['Content-Disposition'] = 'attachment; filename="' + filename + '.xls"' 
        render "report.xls.erb" 
    end 
    
    相關問題