Ruby on Rails:导出xlsx导出所有html页面,而不是请求的数据

时间:2019-04-30 09:01:28

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

我正在使用Rails 4.2,并使用gems axlsx和axlsx_rails 我将很快移至Rails 5,但现在我使用此版本。

我想要的内容:使用axls_rails gem从查询中导出xlsx文件

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

enter image description here

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

宝石文件:

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,并尝试查看response_to是否存在问题并使用另一个查询,但它也做了同样的事情

我也试图在format.xlsx这行中写,但是仍然没有改变:

编辑2: 我尝试在format_xlsx的axlsx.xlsx文件中渲染response_to文件,但是得到了相同的结果

response.headers ['Content-Disposition'] ='附件; filename =“ server_report.xlsx”'

1 个答案:

答案 0 :(得分:0)

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