2015-06-29 29 views
1

我有一個按鈕,允許用戶在我的Rails 3.2應用程序中下載csv。在沒有respond_to塊的Rails中更改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 

隨着所下載名爲learn_registrants.csv csv文件上面的代碼。我想將event_id添加到csv名稱。我發現一個用於響應塊的filename:選項,但我不能在這裏使用它。關於如何在不重構使用respond_to塊的情況下更改csv名稱的任何想法?

回答

1

你可以使用send_data代替:

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

或者您也可以通過改變頭

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

感謝@jumpingcode更改文件名。設置標題就像一個魅力。 – Lumbee

+0

好消息,很高興幫助 – ediblecode