Ruby on rails CSV在Safari视图中呈现,但我希望它下载一个文件

Ruby on rails CSV在Safari视图中呈现,但我希望它下载一个文件,ruby-on-rails,safari,mime-types,fastercsv,Ruby On Rails,Safari,Mime Types,Fastercsv,我已配置自定义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 在我的控制器中有一个要阻止的响应单元: respond_to do |format| format.html format.csv

我已配置自定义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
在我的控制器中有一个要阻止的响应单元:

respond_to do |format|
    format.html
    format.csv { render :csv => csv_code}
  end   
使用Firefox和Chrome,.csv呈现到下载的文件中。使用Safari.csv呈现为一个视图:如何更改该视图并强制将其作为文件下载

请参见问题的屏幕截图:

试试看

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

send_file "path/to/file.csv", :disposition => "attachment"

在旧的Rails 2应用程序中,我使用的是
send_data
,而不是控制器中的
render
。例如:

def csv
  ... # build data
  send_data csv_data_as_string, :filename => "#{filename}.csv", :type => 'text/csv'
end
def csv
  ... # build data
  send_data csv_data_as_string, :filename => "#{filename}.csv", :type => 'text/csv'
end