Ruby on rails rails excel mime类型-如何更改默认文件名?

Ruby on rails rails excel mime类型-如何更改默认文件名?,ruby-on-rails,mime-types,railscasts,Ruby On Rails,Mime Types,Railscasts,我跟着火车走 并在我的Rails应用程序中设置Excel下载 我的控制器代码如下所示: def show @project = Project.find(params[:id]) @project.tasks.order(:name) respond_to do |format| format.html format.json { render json: @project } format.xls end end .

我跟着火车走 并在我的Rails应用程序中设置Excel下载

我的控制器代码如下所示:

  def show
    @project = Project.find(params[:id])
    @project.tasks.order(:name)
    respond_to do |format|
      format.html
      format.json { render json: @project }
      format.xls
    end
  end
.dl_xls= link_to "Download xls", url_for(:format => 'xls')
在我看来,我创建了下载excel文件的链接,如下所示:

  def show
    @project = Project.find(params[:id])
    @project.tasks.order(:name)
    respond_to do |format|
      format.html
      format.json { render json: @project }
      format.xls
    end
  end
.dl_xls= link_to "Download xls", url_for(:format => 'xls')
现在,生成的excel文件的命名总是与
项目的id
记录类似,例如
80.xls

有没有办法改变这种行为并给它一个自定义名称


谢谢..

我希望您实际看到的是视图sans.erb的名称,而不一定是控制器操作

如果你想要达到这样的控制水平,你可以做三件事

  • 使用控制器中的send_data调用,使用tab分隔的数据,如带有filename:选项的rails cast中所示
e、 g

class ProductsController
这种方法以及railscast引入的旧Proprity spreadsheetML语言都存在问题,但如果您的用户群锁定在MS-OFFICE中,我认为没有人会注意到

  • 或者,您可以使用类似于使用axlsx gem的acts_as_xlsx或axlsx_导轨的gem。这些工具生成经过验证的xlsx数据(也称为Office Open XML/ECMA-376,或MS自Office 2007以来一直在使用的数据…),并与其他现代电子表格软件(如数字、谷歌文档、LibraOffice)具有相当好的互操作性。我相信你在railscast上注意到了所有与此相关的评论
我知道,因为我是作者或axlsx,这些限制,以及缺乏样式、图表和验证,是什么促使我首先创作了axlsx

更多信息: axlsx:

充当_xlsx:

  • 编写自己的响应器/渲染器
axlsx_rails也是一个很好的例子,说明了如何编写自己的渲染器和响应器,以便可以使用标准rails视图,但重命名下载的文件


我相信你的答案是:

使用标题设置文件名

headers["Content-Disposition"] = "attachment; filename=\"#{filename}\"" 

此链接

感谢您的回答,但我不想使用发送数据的路径。我刚刚将上面引用的行添加到我的format.xls{…}中,它使用指定的文件名。这适用于任何类型的呈现可下载文件。伟大的我想补充一点,文件名也应该包括扩展名(.xls)谢谢,你节省了我的时间。