在没有respond_to块的情况下更改Rails中的CSV名称

时间:2015-06-29 15:38:41

标签: ruby-on-rails csv

我有一个按钮,允许用户在我的Rails 3.2应用程序中下载csv。

视图

<%= link_to "Export registration data", learn_registrants_path(format: "csv", :id => @event.id), :class => "btn btn-default btn-primary" %>

控制器

 def export_registrants
    @event = Event.find(params[:id])
    if current_learner.id == @event.registration_contact_id
      registrants = EventRegistration.includes.where(event_id: @event.id)
      csv = RegistrantsExport.new(registrants).to_csv
      render text: csv
    end
  end

使用上面的代码,下载的csv文件名为learn_registrants.csv。我想将event_id添加到csv名称。我找到了一个filename:选项,用于响应阻止,但我不能在这里使用它。关于如何在不重构使用respond_to块的情况下更改csv名称的任何想法?

1 个答案:

答案 0 :(得分:1)

您可以改为使用send_data

send_data csv, :filename => 'your_file_name.csv', 
    :disposition => 'inline', :type => "multipart/related"

或者您可以通过更改标题来更改文件名

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