我有一个按钮,允许用户在我的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名称的任何想法?
答案 0 :(得分:1)
您可以改为使用send_data
:
send_data csv, :filename => 'your_file_name.csv',
:disposition => 'inline', :type => "multipart/related"
或者您可以通过更改标题来更改文件名
headers["Content-Disposition"] = "attachment; filename=\"#{filename}\""