Javascript 使用Ruby on Rails在后端生成Chartjs图表

Javascript 使用Ruby on Rails在后端生成Chartjs图表,javascript,ruby-on-rails,Javascript,Ruby On Rails,我正在使用Chartjs在rails应用程序中制作一些漂亮的图表。一切都很好,除了我希望能够通过电子邮件将这些图表的图像发送给人们。我意识到我正在使用javascript库生成图像。有没有办法让rails在后端运行此库、保存图表图像并将其作为电子邮件附件提供?如果您想在服务器端使用JavaScript库,您需要在服务器上运行JavaScript—即Node.js。无论如何,这是资产管道的一个依赖项,因此您可能已经安装了它。那么也许你可以试试,尽管我自己从来没用过。npm将是你的朋友,如果它被证明

我正在使用Chartjs在rails应用程序中制作一些漂亮的图表。一切都很好,除了我希望能够通过电子邮件将这些图表的图像发送给人们。我意识到我正在使用javascript库生成图像。有没有办法让rails在后端运行此库、保存图表图像并将其作为电子邮件附件提供?

如果您想在服务器端使用JavaScript库,您需要在服务器上运行JavaScript—即Node.js。无论如何,这是资产管道的一个依赖项,因此您可能已经安装了它。那么也许你可以试试,尽管我自己从来没用过。npm将是你的朋友,如果它被证明是一个哑弹

接下来的问题是如何从Rails调用它。一个快速的谷歌提示,但我恐怕我还没有使用它,这里的一些人似乎觉得使用它令人沮丧

您的另一个选择是运行一个服务器,作为一个响应HTTP请求的微服务来提供此功能,您可以使用类似的方式从后端轻松发送HTTP请求。事实上,用它来设置这样的东西是非常容易的


编辑:在尽可能直接地回答了您的问题之后,您可能想调查一下,它有一个ruby API,但我相信它有Chart.js作为依赖项,所以您可以使用它来复制图表。

实际上我正在使用一个名为 不需要Js或Jquery。。。您只需将json发布到wannacharts的url,api就会返回json格式的base64图像或包含图表的png图像的url。 很简单,很干净

  • 创建您的帐户
  • 登录
  • 获取api密钥
  • 并使用内部的图表设计器设置 你的图表
其站点中显示的json必须具有以下格式:

{
    "provider_id":1,
    "chart_id": 2,
    "api_key":"m075881c4a169784dd05bdaf33",
    "data": [{
      "color":"#f1c454",
      "xValue": "Jan",
      "yValue": 21.5
  },{
      "color":"#79b599",
      "xValue": "Feb", 
      "yValue": 25
  },{
      "color":"#d97e78",
      "xValue": "Mar", 
      "yValue": 14.4
  }]
  }

该网站的常见问题解答在这里

要通过电子邮件发送Chart.js Chart,您必须将其呈现为图像。这通常意味着设置一个具有Javascript运行时的后端,这是一个非常重要的解决方案,只需将图表放入电子邮件中即可

我也有这个问题,并构建了一个web服务,它将Chart.js配置呈现为图像

例如,假设这是您当前在应用程序中使用的Chart.js配置:

{
  type: 'bar',
  data: {
    labels: ['January', 'February', 'March', 'April', 'May'],
    datasets: [{
      label: 'Data',
      data: [ 50, 60, 70, 180, 190 ]
    }]
  }
}
require 'uri'
config = """{
  type: 'bar',
  data: {
    labels: ['January', 'February', 'March', 'April', 'May'],
    datasets: [{
      label: 'Data',
      data: [ 50, 60, 70, 180, 190 ]
    }]
  }
}
"""
encoded = URI::encode(config.strip)

# Output a URL to my image
puts "https://quickchart.io/chart?c=#{encoded}"
将此配置打包到URL中,并将其传递给
https://quickchart.io/chart?c=
endpoint,如下所示:

这是配置的最佳实践。 当您单击链接时,浏览器会自动执行此操作,但您将在Ruby应用程序中自己执行此操作:

{
  type: 'bar',
  data: {
    labels: ['January', 'February', 'March', 'April', 'May'],
    datasets: [{
      label: 'Data',
      data: [ 50, 60, 70, 180, 190 ]
    }]
  }
}
require 'uri'
config = """{
  type: 'bar',
  data: {
    labels: ['January', 'February', 'March', 'April', 'May'],
    datasets: [{
      label: 'Data',
      data: [ 50, 60, 70, 180, 190 ]
    }]
  }
}
"""
encoded = URI::encode(config.strip)

# Output a URL to my image
puts "https://quickchart.io/chart?c=#{encoded}"
在本例中,输出是呈现的Chart.js图表的URL。此图表图像可直接嵌入电子邮件中,因为它不需要Javascript:


非常酷。不久前,我使用了一个类似的服务,叫做