首页 > 解决方案 > 带有 Google 适配器的 Chartkick 在 Heroku Production 上卡住了“正在加载...”

问题描述

我的问题是,无论我尝试什么,我都会遇到“正在加载..”,当我使用 chartkick 和 wicked_pdf 时,我应该有图表。

宝石文件

gem 'wicked_pdf'
gem 'wkhtmltopdf-binary-edge', '0.12.4.0'
gem 'chartkick'

控制器

respond_to do |format|
      format.html
      format.pdf do
        render pdf: "FILENAME",
        template: "ratingreports/show.html.erb",
        window_status: "FLAG_FOR_PDF",
        margin:  {  top:               5,                     
                    bottom:            10,
                    left:              0,
                    right:             0 },
        background: true,
        page_size: 'Letter',
        default_header: false,
        footer: {
                  :html => {
                     :template => 'shared/footer.html.erb'
                  }
               }
      end
    end 

pdf.js

setTimeout((function () {
    window.status = "FLAG_FOR_PDF";
    Object.keys(Chartkick.charts).forEach(function (key) {
        Chartkick.charts[key].redraw();
    });
}), 5000);

显示.html.erb

head>
<%= javascript_include_tag wicked_pdf_asset_base64('pdf') %>
<%= javascript_include_tag wicked_pdf_asset_base64('loader') %>
<%= javascript_include_tag wicked_pdf_asset_base64('chartkick') %>
<%= wicked_pdf_stylesheet_link_tag "application" %>
</head>
...
<%= column_chart @scorecount, colors: ["#46ceb7"], adapter: "google", discrete: true, height: "200px", width: "400px" %>
...

配置/wicked_pdf.rb

if Rails.env.production?
  wkhtmltopdf_path = "#{Rails.root}/bin/wkhtmltox_0.12.5-1.xenial_amd64.deb"
else
WickedPdf.config = {
  exe_path: '/usr/local/bin/wkhtmltopdf'
}
end

我将 loader.js 和 chartkick.js 放在我的 assets/javascript 目录中。这是我至少可以让它从“找不到适配器”到“正在加载”的唯一方法。

标签: ruby-on-railsherokuwicked-pdfchartkick

解决方案


每次......我工作一天,将其发布到堆栈,然后我在一小时后找到答案。

所以,要解决这个问题,我必须删除(注意:我“gem uninstall wkhtmltopdf-binary-edge”,然后也从 gemfile 中删除,所以它会删除可执行文件)

gem 'wkhtmltopdf-binary-edge', '0.12.4.0'

并替换为

gem 'wkhtmltopdf-heroku'

并在 wicked_pdf.config

if Rails.env.production?
  wkhtmltopdf_path = Gem.bin_path('wkhtmltopdf-heroku', 'wkhtmltopdf-linux-amd64')
else
WickedPdf.config = {
  exe_path: '/usr/local/bin/wkhtmltopdf'
}
end

叮!薯条做好了。希望有一天能对某人有所帮助!终于可以推出这款产品了!


推荐阅读