我有一個我想要洗牌的圖像數組,只顯示前十個結果。我無法弄清楚如何做到這一點。在導軌上重新排序紅寶石數組
這裏是我的代碼
<% @images.each.shuffle do |image| %>
<tr>
<td><%= image.name %></td>
<td> <%= image_tag image.picture.url %></td>
<td><%= image.likes %></td>
<td><%= link_to 'Show', image %></td>
<td><%= link_to 'Edit', edit_image_path(image) %></td>
<td><%= link_to 'Destroy', image, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
是@ @圖像是AR代理對象還是什麼?如果是這樣,您可能需要調整您的查詢,以便它執行洗牌和限制DB端。即'@images = Image.where(...)。order(「rand()」)。limit(10)'。請注意,隨機排序不能使用索引,但它比將整個表加載到RAM應用程序端更好。這還有一個額外的好處,即將邏輯放在視圖之外,這是Rails的最佳實踐。 –
@ChrisHeald,謝謝。我不得不做一點挖掘,但我在數據庫方面找到了答案。發佈你的答案,以便我可以給你信用 – Aaron