如何存储行中具有相同ID的每个数据

我是Rails开发的新手,如果我不能很好地表达自己,我感到抱歉。

每个周期我都有一个滑轨:

r.round_matches.each do |m|
  m.round_matches_team.each do |mt|
      sheet.add_row [m.round_id,mt.team_name]
  end
end

每个round_match都有:round_id加倍 输出为:

  

round_id:2队名:TEST A

     

round_id:2队名:TEST B

我如何在每个周期中按ID分组,并从round_match_teams中为每个相同的round_id推销team_name?我希望我的输出是:

  

round_id:2队名[1]:测试A队名[2]:测试B

yiliang123 回答:如何存储行中具有相同ID的每个数据

这应该有效

r.round_matches.each do |m|
  team_names = m.round_matches_team.map.with_index do |team,index|
    "team_name[#{index + 1}]: #{team.team_name}"
  end.join(' ')
  sheet.add_row ["round_id: #{m.round_id} #{team_names}"]
end
,

我将对此进行一些不同的处理:我将数据处理为更好的格式,然后根据该数据创建表格。

sheet_data = Hash.new([])
r.round_matches.each do |m|
  m.round_matches_team.each do |mt|
    sheet_data[mt.round_id] << mt.team_name 
  end 
end 
sheet_data.each do |round_id,teams|    
  sheet.add_row [round_id,*teams]
end

解释:我将生成一个哈希,其密钥为round_id,其值为包含所收集团队名称的数组。然后,当添加行时,我使用splat-operator(*)来确保每个团队名称将获得一个单独的列。

如果在使用splat之前更有意义,您甚至可以对团队名称进行排序,或者使用*teams之类的东西将所有团队合并为一列(如果需要的话),而不是使用teams.sort.join(",") /首选)。

本文链接:https://www.f2er.com/3153188.html

大家都在问