ruby-on-rails - 分页限制了我的 csv 导出
问题描述
我在我的应用程序中添加了 csv 导出和分页功能。
父.rb
CSV_HEADER = %w[parent_1_firstname parent_1_lastname address]
def self.to_csv
CSV.generate do |csv|
csv << CSV_HEADER
all.each do |parent|
csv << [
parent.parent_1_firstname,
parent.parent_1_lastname,
parent.address
]
end
end
end
控制器.rb
def main_admin
require 'csv'
add_breadcrumb "Admin"
@filterrific = initialize_filterrific(
Parent,
params[:filterrific],
select_options: {
with_status: Parent.options_for_status
}
) or return
@parents = @filterrific.find.paginate(:page => params[:page], :per_page => 10)
respond_to do |format|
format.html
format.js
format.csv { send_data @parents.to_csv }
end
rescue ActiveRecord::RecordNotFound => e
puts "Had to reset filterrific params: #{ e.message }"
redirect_to(reset_filterrific_url(format: :html)) and return
end
我面临的问题是当我在我的 main_admin.html.erb 页面上单击下载 CSV 时。下载的 CSV 只是前 10 个父母,但还有更多。就像大约300名父母一样。我无法弄清楚这个问题。请帮忙。
更新
if params[:format] == 'csv' then @filterrific.find.paginate(:page => params[:page], :per_page => 10)
respond_to do |format|
format.csv { send_data @parents.to_csv }
else
@parents = @filterrific.find.paginate(:page => params[:page], :per_page => 10)
respond_to do |format|
format.html
format.js
end
解决方案
如果格式不是 csv,则将代码更改为仅使用分页
@parents = @filterrific.find
@parents = @parents.paginate(:page => params[:page], :per_page => 10) unless request.format == 'csv' #does pagination if not csv format
respond_to do |format|
format.html
format.js
format.csv { send_data @parents.to_csv }
end
推荐阅读
- django - django 频道单元测试的假数据
- spring-boot - 如何生成这个 Spring-boot API 文档示例?
- excel - 从打开的 Excel 文件中获取 PID
- reactjs - 具有依赖关系的 React Hooks setInterval 触发多个间隔
- javascript - 通过多个参数过滤对象数组
- c# - 在 ASP.NET 核心中创建 JWT 是否有更简单的方法?又名“JWT 身份验证的最佳实践?”
- reactjs - React JS:提供者组件如何验证或检查组件是否具有其上下文?
- c# - System.InvalidOperationException :
没想到 - asp.net-core - 在 asp.net core 5 中创建一个新的活动
- javascript - javascript中如何根据用户id动态加载内容