【发布时间】:2018-01-19 08:35:04
【问题描述】:
我正在尝试在导出为 CSV 时获取 ALL 过滤结果。
我的to_csv 工作正常,我怀疑与我的控制器有关。
使用 kaminari、ransack 进行搜索,但似乎使用 ransack 甚至导出到 csv 都很少见。
非常感谢任何帮助。
controller.rb
@search = Order.includes(:user, :order_items).ransack(params[:q])
@orders = @search.result.order(created_at: :desc).page(params[:page])
respond_to do
|format|
format.html
format.csv { send_data @orders.to_csv, filename: "orders-#{DateTime.now.strftime("%d%m%Y%H%M")}.csv" }
end
view.html.haml
= link_to 'Download as CSV', a_o_path(request.params.merge(format: 'csv')), { class: 'btn btn-primary', style: 'float: right;' }
【问题讨论】:
-
您正在合并请求参数对吗?所以 q 参数也会被提交,导致 Ransack 在渲染 csv 之前执行搜索。你为什么不直接打电话:
a_o_path(:format => :csv) -
@bo-oz 抱歉,这似乎不起作用。请求合并是为了得到过滤后的结果。
-
是的,但是您需要摆脱导致 kaminari 启动的参数。如果您要调试对控制器方法的调用,您会看到 @orders 仅包含第一个 x订单,由于分页。然后将其传递给 csv 视图。你得到的正是你想要的。
标签: ruby-on-rails csv ransack kaminari