CSV在Safari视图中呈现,但我希望它下载文件

JZ.*_*JZ. 5 safari ruby-on-rails fastercsv mime-types

我已经配置了自定义mime类型:

ActionController::Renderers.add :csv do |csv, options|
  self.content_type ||= Mime::CSV
  self.response_body  = csv.respond_to?(:to_csv) ? csv.to_csv : csv
end
Run Code Online (Sandbox Code Playgroud)

和我的控制器中的respond_to块:

respond_to do |format|
    format.html
    format.csv { render :csv => csv_code}
  end   
Run Code Online (Sandbox Code Playgroud)

使用Firefox和Chrome,.csv呈现给下载的文件.使用Safari,.csv呈现为视图:如何更改此值并强制下载为文件?

查看问题的屏幕截图:

在此输入图像描述

Gal*_*Gal 10

尝试

respond_to do |format|
    format.html
    format.csv do
        response.headers['Content-Type'] = 'text/csv'
        response.headers['Content-Disposition'] = 'attachment; filename=thefile.csv'    
        render :csv => csv_code
    end
end 
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,请尝试使用

send_file "path/to/file.csv", :disposition => "attachment"
Run Code Online (Sandbox Code Playgroud)