Rails 3 CSV和XLS导出不提供文件扩展名

时间:2013-04-29 10:17:48

标签: ruby-on-rails 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

如何在表单中设置格式?

1 个答案:

答案 0 :(得分:6)

这来自不同的question

您可以设置标题以告知文件的浏览器名称。

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