这似乎应该很简单,但我似乎无法找到一个直接的答案.
我添加了一个csv mime-type,以下似乎可以工作,除了下载的文件总是命名为"report.csv".
在我的控制器中:
def report
  respond_to do |format|
    format.html
    format.csv do
      render :template => "summary/report.csv.erb",
             :filename => "foo" #doesn't work
    end
  end
end
我认为它使用默认渲染器(我没有实现替代渲染器),但我似乎无法找到有关可用选项的完整文档.
是不是有像"文件名"选项或我可以使用的东西?有更好的方法吗?
我的用户可以生成一些数据的报告,并决定他们想要的格式.
他们可以选择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
如何在表单中设置格式?