我可以创建xl和csv文件格式,并希望在表单中为它们创建下载链接。
用户可以使用此表单生成对记录的搜索
=simple_form_for :guestlist_booking_search, controller: 'guestlist_bookings_controller', action: 'index', method: :get do |f|
%fieldset
%legend Guestlist Booking Search
= f.input :lastname
= f.input :start, as: :string, class: "form-control auto_picker1", :input_html => { :class => 'auto_picker1', value: guestlist_booking_search.start.strftime('%d-%m-%Y %H:%M') }
= f.input :finish, as: :string, class: "form-control auto_picker2", :input_html => { :class => 'auto_picker2', value: guestlist_booking_search.finish.strftime('%d-%m-%Y %H:%M') }
= f.submit "Submit"
= f.submit "Download CSV", name: "download_csv"
因此表单有两个提交按钮,我想要一个处理搜索并显示结果,另一个处理搜索并开始下载csv文件。
所以在我的索引动作中我有这个
def index
if params[:download_csv]
respond_to do |format|
format.html
format.csv { send_data @guestlist_bookings.to_csv }
end
end
end
guestlist_bookings变量在before块中设置(生成并显示搜索工作正常)。
我似乎无法解决的是如何让文件开始下载。目前没有.xls块的响应。根据我的理解,'send_data'功能用于从控制器开始下载。
答案 0 :(得分:1)
我认为您的问题是它正在评估format.html
块,而不是format.csv
块,因为您还没有告诉它所需的格式是csv。
尝试改变你的第一行 - 这会使用一个命名路线,由于各种原因更好:
=simple_form_for :guestlist_booking_search, url: guestlist_bookings_path(format: "csv"), method: :get do |f|
答案 1 :(得分:0)