Rails循环数组不显示重复的字符串

时间:2017-04-10 19:03:15

标签: ruby-on-rails

我循环遍历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”也应该只出现一次我想要删除所有重复的内容。非常感谢任何帮助,谢谢!

3 个答案:

答案 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 %>