gpt4 book ai didi

javascript - 将 Rails 中的记录分组为图表?

转载 作者:行者123 更新时间:2023-12-03 05:14:24 25 4
gpt4 key购买 nike

已解决

我有一个饼图:

enter image description here

data: [<% HomeworkStudent.where(:school_user_id => current_user.school_user.id).each do | homework_student| %>
[<%= homework_student.homework.classmodule.subject.to_json.html_safe %>, <%= homework_student.difficulty.to_json %>],
<% end %>]
}]

数据绘制得很好,但我希望按主题对“难度”进行分组。换句话说,数学和艺术在图表上应该只有一次。这是 highcharts 图表。

我还通过我的模型尝试了以下不同的方法,但它不起作用:

作业.rb

def self.getData
data = []
self.subjectnames.each do |type2|
data << Hash["name", type2, "y", self.type2_count(type2)]
end
data
end

...
private

def self.subjectnames
Classmodule.pluck(:homework_id).uniq
end

def self.type2_count(type2)
HomeworkStudent.where(difficulty: type2).count
end

然后在图表中像这样:

Controller 

@data = Homework.getData()

View:

data: <%= @data.to_json.html_safe %>

后一种路线是理想的路线,但由于涉及不同的模型,所以有点困惑。

有3个模型:Classmodule保存科目名称,homework_student保存难度列和homework_id列。

homework.rb
has_many :homework_students, :class_name => 'HomeworkStudent', dependent: :destroy
belongs_to :classmodule, :class_name => 'Classmodule', :foreign_key => :subject

classmodule.rb
has_many :homeworks, :class_name => 'Homework'

homework_student.rb:
belongs_to :classmodule, :class_name => 'Classmodule', :foreign_key => :subject

虽然不理想,而且我更愿意正确地做到这一点,但我现在在顶部的方法有效,但我只是想知道如何按主题对结果进行分组?如果我必须为此检查模型有什么建议吗?

谢谢!

已解决

感谢 Ruby Racer:

在 Controller 中:

@data = {}
HomeworkStudent.where(:school_user_id => current_user.school_user.id).each do |homework_student|
label = homework_student.homework.classmodule.subject
value = homework_student.difficulty.to_i
@data[label] = (@data[label]) ? (@data[label] + value) : value
end

在 View 中的图表中:

data: <%= @data.to_a.to_json.html_safe %>

最佳答案

在不深入模型的情况下,我会选择这样的东西:

@data = {}
HomeworkStudent.where(:school_user_id => current_user.school_user.id).each do |homework_student|
label = homework_student.homework.classmodule.subject
value = homework_student.difficulty
@data[label] = (@data[label]) ? (@data[label] + value.to_i) : value.to_i
end

现在@data看起来有点像这样:

@data
# {"art"=>90, "math"=>200}
@data.to_a
# [["art", 90], ["math", 200]]

这很像您所需要的。现在您只需将其转换为 json 和 html 安全

newdata = @data.map {|subject, difficulty| [subject.to_json.html_safe, difficuty.to_json]}

但你并不真的需要那个。因此,您将 ruby​​ 数组发送到 js:

data: <%= @data.to_a.inspect.html_safe %>

或者,更好的是:

data: <%= @data.to_a.to_json.html_safe %>

关于javascript - 将 Rails 中的记录分组为图表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41665514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com