如何制作带有Rails关联的ChartKick折线图



我正在努力格式化我的ruby代码,以获得我想要的图表类型。我正在制作一个Rails6应用程序,它在表之间有几层关联
我有:

  • 每个标题都有一篇文章
  • 每篇文章都有一种情感(_O(
  • 情绪表有一个分数栏

我想要构建的图表将只是X轴=标题.created_at,Y轴标题.article.sentiment.score

控制器

@headlines = Headline.where("created_at = ?", Date.today)

查看代码

<%= line_chart @headlines.group_by_day(:created_at).count %>

如何将Y轴设为"score"而不是"count"?

谢谢。

这取决于如何设置模型的关系。如果您在HeadlineSentiment中有类似的关系

class Headline
has_one :article
has_one :sentiment, through: :article
end

你可以简单地做一些类似的事情

@headlines.each_with_object({}) do |headline, result|
result[headline.id] = headline.sentiment&.score
end
# { 1: 2, 3: 4}

您应该在初始查询中包括articlesentiment,否则您将有一个类似的n+1查询

Headline.includes(:article, :sentiment).where("created_at = ?", Date.today)

在SQL中可能有一种更高性能的内联分组方式,但这是应该的

最新更新