2016-02-23 103 views
1

在我的搜索控制器中,我使用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個數組來做到這一點。什麼是最好的方法來實現這個工作?

回答

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 %> 
+0

但是那不是搶前10個結果兩者的跨越,而不是第10 ** **每兩個數組的? –

+0

試試吧,你會看到結果;-)它只會取前10個結果,完成循環,轉到哈希中的下一個鍵,然後獲取該鍵的前10個結果等等。它應該做你正在努力實現的目標 – MrYoshiji

+0

啊是的。感謝您指出了這一點。 –