我正在尝试基于Ransack gem结果集使用axlsx gem生成Excel文件。
控制器:
@q = Candy.ransack(params[:q])
@candies = @q.result.all当我在视图中使用Ransack gem调用@candies时,我得到了600个结果中的30个左右。过滤成功!
但是当我使用axlsx下载@candies时:
//index.xlsx.axlsx
require 'axlsx'
xlsx_package = Axlsx::Package.new
workbook = xlsx_package.workbook
workbook.add_worksheet(name: "Candies") do |sheet|
sheet.add_row ["id", "name", "type", "date"]
@candies.each do |candy|
sheet.add_row [candy.id, candy.name, candy.type, candy.date]
end
end它生成包含全部600条记录的文件!
这个问题和Ransack Search Results - to_xls?非常相似,但是我用axlsx gem而不是to_xls gem遇到了同样的问题!
发布于 2017-08-15 09:27:22
您的搜索结果不应包含"all“
@q = Candy.ransack(params[:q])
@candies = @q.result
put "total record = ", @candies.count我添加了trace方法,以便您可以跟踪结果,您可以从rails服务器控制台/开发日志文件中检查结果
发布于 2018-11-30 20:10:58
然后确保你已经允许了控制器中的相关参数。假设我们没有更改任何字段,我们可以安全地这样做:
def search
params.permit![:format] # must permit this
@q = Shift.ransack(params[:q])
@shifts = @q.result
respond_to do |format|
format.xlsx
format.html
end结束
发布于 2020-04-15 03:24:30
@q = Candy.ransack(params[:q])
@candies = @q.result.page
puts "total record = #{@candies.count}"我认为您设置了在UI上显示的页面限制。使用.page过滤并将相同的var发送到axslx文件。
https://stackoverflow.com/questions/45685229
复制相似问题