У меня есть массив изображений, которые я хочу перетасовать и показываю только первые десять результатов. Мне трудно понять, как это сделать.Перетасовка массива в рубине на рельсах
Вот мой код
<% @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 %>
Является ли '@ images' объектом прокси-сервера AR? Если это так, вы можете настроить свой запрос таким образом, чтобы он выполнял команду DB-side в случайном порядке. т. е. '@images = Image.where (...). order (" rand() "). limit (10)'. Обратите внимание, что сортировка случайным образом не может использовать индексы, но лучше, чем загрузка всей таблицы в сторону ОЗУ. Это дает дополнительное преимущество в том, чтобы сохранять логику из ваших взглядов, что является лучшей практикой Rails. –
@ChrisHeald, спасибо. Я должен был немного поработать, но я нашел ответ на стороне БД. Отправьте ответ, чтобы я мог дать вам кредит – Aaron