【问题标题】:how to create line chart and appear data in rails?如何创建折线图并在rails中显示数据?
【发布时间】:2018-06-18 07:02:55
【问题描述】:

我在表Gspeed 中有一个名为speed 的列。我需要创建一个折线图group by minute (created_at) 并点出现speed

例如p1 (110.4)p2 (113.5) 等。

速度可以有多个值。

我有两个模型:用户和 Gspeed。 Gspeed包含name类型stringspeed类型float

数据库示例:

仅当前用户的显示速度

形状示例

当尝试使用控制器中的代码时 @line_chart_data =Gspeed.all.group_by_minute(:created_at).average(:speed)

在视图中

只显示值

【问题讨论】:

  • 这个话题似乎很有趣,但为了获得人们的帮助,也许你想通过一些关于模型、xy 轴、样本数据以及你迄今为止尝试过的细节来改进你的问题。
  • 添加更多信息感谢 iGian

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 chartkick


【解决方案1】:

试试这是否符合您的要求。也许您需要进一步操作数据数组。

在控制器中构建数据集(我使用平均值,但这取决于你):

@line_chart_data = User.all.map { |user|
    {name: user.name, data: user.gspeeds.group_by_minute(:created_at).average(:speed)}
    }

然后在视图中绘制图形:

<%= line_chart @line_chart_data %>

【讨论】:

  • 感谢您的回复,但有一些错误undefined method group_by_minute' for 130.5:Float
  • 您的 Gem 文件中有 gem 'groupdate' 吗?这段代码Gspeed.all.group_by_minute(:created_at) 会引发一些错误吗?
  • 当更改为@line_chart_data = Gspeed.all.group_by_minute(:created_at).average(:speed) 时出现一个值仅在描述问题上更新
  • 我希望查看输出谢谢 iGian
  • Gspeed.all.group_by_minute(:created_at) 只是为了测试group_by_minute,而不是发送给chartikick。我可以看到输出,所以你应该:我的答案中的代码也应该适合你。如果不是,也许我错过了一些信息。尝试打印@line_chart_data数组,检查是否有数据。当然,我假设你设置模型和数据库之间的关系包含一些示例数据。
猜你喜欢
  • 1970-01-01
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多