首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 5:使用axlsx导出Ransack结果集

Rails 5:使用axlsx导出Ransack结果集
EN

Stack Overflow用户
提问于 2017-08-15 09:20:28
回答 3查看 411关注 0票数 0

我正在尝试基于Ransack gem结果集使用axlsx gem生成Excel文件。

控制器:

代码语言:javascript
复制
@q = Candy.ransack(params[:q])
@candies = @q.result.all

当我在视图中使用Ransack gem调用@candies时,我得到了600个结果中的30个左右。过滤成功!

但是当我使用axlsx下载@candies时:

代码语言:javascript
复制
//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遇到了同样的问题!

EN

回答 3

Stack Overflow用户

发布于 2017-08-15 09:27:22

您的搜索结果不应包含"all“

代码语言:javascript
复制
@q = Candy.ransack(params[:q])
@candies = @q.result
put "total record = ", @candies.count

我添加了trace方法,以便您可以跟踪结果,您可以从rails服务器控制台/开发日志文件中检查结果

票数 0
EN

Stack Overflow用户

发布于 2018-11-30 20:10:58

  • 合并参数以包括您正在下载的相关格式类型。我的应用程序的相关路径是: search_shifts_path -您的路径会有所不同,因此请相应地进行更改。

然后确保你已经允许了控制器中的相关参数。假设我们没有更改任何字段,我们可以安全地这样做:

代码语言:javascript
复制
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

结束

票数 0
EN

Stack Overflow用户

发布于 2020-04-15 03:24:30

代码语言:javascript
复制
@q = Candy.ransack(params[:q])
@candies = @q.result.page
puts "total record = #{@candies.count}"

我认为您设置了在UI上显示的页面限制。使用.page过滤并将相同的var发送到axslx文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45685229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档