我循环遍历id的数组:
<% @tip.horse_ids.each do |i| %>
<% @horse = Horse.find(i) %>
<%= @horse.race.meeting.racecourse.strip %><br />
<%= @horse.race.time.to_s(:time) %> - <%= @horse.name.strip %><br />
<% end %>
其中输出的内容如下:
Kempton (AW)
01:30 - Light Gunner
Kempton (AW)
01:30 - Mesophere
Kempton (AW)
01:30 - Ragtag Rascal
Kempton (AW)
01:30 - Many Waters
Kempton (AW)
02:40 - Judicial
Stratford
01:40 - Rabunda
Stratford
我只希望“Kempton(AW)”在循环中出现一次(第一个)并且时间相同所以“1:30”也应该只出现一次我想要删除所有重复的内容。非常感谢任何帮助,谢谢!
答案 0 :(得分:1)
使用uniq
@tip.horse_ids.uniq.each do |i|
或更好
<% Horse.where(id: @tip.horse_ids).each do |horse| <%
<%= horse.race.meeting.racecourse.strip %><br />
<% end %>
甚至更好,如果一切设置正确,您应该可以访问horses
。
<% @tip.horses.each do |horse| <%
<%= horse.race.meeting.racecourse.strip %><br />
<% end %>
答案 1 :(得分:0)
将uniq添加到您的阵列可以解决您的问题
<% @tip.horse_ids.uniq.each do |i| %>
<% @horse = Horse.find(i) %>
<%= @horse.race.meeting.racecourse.strip %><br />
<%= @horse.race.time.to_s(:time) %> - <%= @horse.name.strip %><br />
<% end %>
答案 2 :(得分:0)
如果有人遇到类似的问题,我修复它的方法是使用group_by
<% @tip.horses.group_by(&:meeting).each do |meeting, horses| %>
<%= meeting.racecourse %><br />
<% horses.each do |horse| %>
<%= horse.race.race_time %> - <%= horse.name %><br />
<% end %>
<% end %>