【问题标题】:Ruby on Rails: export xlsx export all html page instead the requested dataRuby on Rails:导出 xlsx 导出所有 html 页面而不是请求的数据
【发布时间】:2019-04-30 09:01:27
【问题描述】:

我正在使用 rails 4.2,并使用 gems axlsx 和 axlsx_rails 我很快就会迁移到 Rails 5,但现在我使用这个版本。

我想要什么:使用 axls_rails gem 从查询中导出 xlsx 文件

我得到的是:它将整个html文件导出为数据,参见图片:

我完全按照 git 文档中的 3 个不同的指南进行了调试,并且已经对其进行了多次调试,但没有发现问题。希望这里有人可以帮助我了解导致它的原因。

宝石文件:

gem 'rails', '4.2.11'

# import/export xlsx gems
gem 'write_xlsx'
gem 'rubyzip', '>= 1.2.1'
gem 'axlsx', git: 'https://github.com/randym/axlsx.git', ref: 'c8ac844'
gem 'axlsx_rails'

html 文件:

= link_to "<i class='icon icon-file-down'></i> Export</a></li>".html_safe, server_report_system_reports_path(format: :xlsx)

控制器文件:

def server_report
    organization_id = params[:organization_id]
    @accounts = Admin::Account.where("organization_id = ?", organization_id) unless organization_id.blank?
    @accounts_paginated = @accounts.paginate(per_page: 10, page: params[:page] || 1 )
   
    respond_to do |format|
      format.html
      format.xlsx {
        response.headers['Content-Disposition'] = 'attachment; filename="server_report.xlsx"'
      }
    end
  end

xlsx.axlsx 文件:

wb = xlsx_package.workbook
wb.add_worksheet(name: "Accounts") do |sheet|

  sheet.add_row ["Account id", "Member id", "Member name", "Member email"]
  @accounts_paginated.each do |account|
    account.members.each do |member|
      sheet.add_row [account.id, member.id, member.name, member.email]
    end
  end
end

编辑: 我尝试调用另一个名为 export 的 def 并尝试查看 respond_to 是否有问题并使用另一个查询,但它也做了同样的事情

我也尝试在 format.xlsx 中写入这一行,但仍然没有任何改变:

编辑 2: 我试图在respond_to文件中渲染,而不是在format.xlsx中的axlsx.xlsx文件中,但我得到了相同的结果

response.headers['Content-Disposition'] = '附件;文件名="server_report.xlsx"'

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 export-to-excel xlsx axlsx


    【解决方案1】:

    我发现了问题。我在控制器中渲染 xlsx 文件时添加了 layout: false 并且它起作用了

    【讨论】:

      猜你喜欢
      • 2014-10-13
      • 1970-01-01
      • 2011-09-12
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多