在一组数组中创建范围

时间:2016-02-23 20:00:24

标签: ruby-on-rails ruby range enumeration

在我的搜索控制器中,我使用group_by方法收集了一系列结果(艺术家/专辑)。

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

在我看来,@grouped_results被枚举并根据它们所属的类(艺术家/专辑)放在div中。

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

我想做的是从每组中获取前10个结果。因此,它将返回最多10位艺术家,并返回最多10张专辑。考虑到这一点,take方法或使用数值范围(0..10)是不够的,因为我实际上是尝试使用2个数组。让这个工作的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您只需在循环中获得10个第一个结果:

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