在一组数组中创建范围

Creating a range across a group of arrays

在我的搜索控制器中,我使用 group_by 方法收集了结果列表 (artists/albums)。

class SearchController < ApplicationController
  def index
    @grouped_results = @results.group_by { |q| q.class.name }
  end
end

在我看来,@grouped_results 根据它们所属的 class (artists/albums) 被枚举并放置在 div 中。

<% @grouped_results.each do |class_name, results| %>
  <div class="<%= class_name.downcase %>-results">
    ...
  </div>
<% end %>

我想做的是从每组中获取前 10 个结果。所以它会 return 最多 10 位艺术家和 return 最多 10 张专辑。考虑到这一点,take 方法或使用数字范围 (0..10) 是不够的,因为我实际上是在尝试使用 2 个数组来执行此操作。让它发挥作用的最佳方法是什么?

您可以简单地在循环中获得前 10 个结果:

<% @grouped_results.each do |class_name, results| %>
  <% few_first_results = results[0..9] %>
  # etc.
  <% few_first_results.each do |result| %>
    # etc.
  <% end %>
<% end %>