gpt4 book ai didi

ruby-on-rails - 按父属性对子项进行分组

转载 作者:行者123 更新时间:2023-12-04 04:47:58 24 4
gpt4 key购买 nike

这是我想要实现的目标:

Group_x.name

member1.name -- member1.join_date -- 等等
member2.name -- member2.join_date -- 等等
...

Group_y.name

member1.name -- member1.join_date -- 等等
member2.name -- member2.join_date -- 等等
...

我要的东西真的很像this虽然那里的实现对我不起作用。

我已经在我的 Controller 中做到了这一点:

def index
# https://stackoverflow.com/a/17835000/2128691
@user_group_ids = current_user.student_groups.map(&:id)
@students = Student.where('student_group_id IN (?)', @user_group_ids)
# https://stackoverflow.com/a/10083791/2128691
@students_by_group = @students.uniq {|s| s.student_group_id}
@title = "All students"
end

并在我看来调用以下内容 -
<% @students_by_group.all.each do |x| %>
<p>
<%= "#{x}" %>
</p>
<% end %>

给我一个列表 student对象。如果我打电话 <%= "#{x.name}" %><%= "#{x.created_at}" %>等,我得到了正确的信息,一切都很好。

但是现在我有了所有这些信息,我怎么能把 group.name (在我的代码中是 x.student_group.name )作为 group_name 为真的所有学生的标题?

最佳答案

我认为你需要使用 group_by@students_by_group像这样:

@students_by_group = @students_by_group.group_by { |s| s.student_group }

这将返回一个哈希,键是学生组对象,值是属于该组的学生,然后您可以在 View 中执行此操作:
<% @students_by_group.each do |group, students| %>
<h3><%= group.name %></h3>
<% students.each do |x| %>
<p>
<%= "#{x}" %>
</p>
<% end %>
<% end %>

作为附加说明, group_by会为每个学生触发一个查询,因此您可能希望像这样为每个学生急切地加载学生组以提高性能:
@students = Student.where('student_group_id IN (?)', @user_group_ids).includes(:student_group)

关于ruby-on-rails - 按父属性对子项进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17903465/

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