循环技巧 - 如果......如何显示一个属性?

Ale*_*oul 2 loops for-loop ruby-on-rails

我正在寻找一个我们可以在循环中使用的函数来执行此操作:

<% for rink in @rinks_in_region %>  
    <%= rink.city #Show Only if city (n-1) != n %> 
    <%= link_to_rink(rink.name+" Ice Rink",rink) %>
    <br>
<% end -%>
Run Code Online (Sandbox Code Playgroud)

基本上只有当它与前一个城市不同时才显示该城市.

合理?谢谢你的帮助!

Alextoul

Sha*_*ell 5

您可以使用该group_by方法@rinks_in_region按城市对溜冰场进行分组,然后使用这些分组来显示城市和溜冰场.它返回一个哈希映射,将您正在分组的内容(本例中为city)映射到该组中原始集合中的值.所以:

<% @rinks_in_region.group_by(&:city).each_pair do |city, rinks| %>  
  <%= city %> 
  <% rinks.each do |rink| %>
    <%= link_to_rink(rink.name+" Ice Rink",rink) %>
    <br/>
  <% end -%>
<% end -%>
Run Code Online (Sandbox Code Playgroud)