Перебирая массив объектов и находя первый элемент с номером позиции

Хорошо, так что я не знаю, как это сказать, но:

У меня есть массив альбомов, и у каждого альбома есть много изображений. Я использую рубиновый камень acts_as_list чтобы позволить пользователям сортировать изображения в альбомах, и, таким образом, каждое изображение имеет позицию. И способ сделать сортировку - установить между изображениями альбомов и изображениями не альбомами, не у всех альбомов будет изображение с позицией один.

Итак, я хочу перечислить все альбомы, а затем отобразить только изображение с самой ранней позицией в этом альбоме. Тем не менее, нет никакого метода на позиции, чтобы найти первую позицию.

Вот что у меня сейчас:

<% @albums.each do |i| %>
  <li class="box sortable_object" style="float:left; margin: 0.5em;" id="album_<%= i.id %>">
    <span class="handle">[drag me!]</span>
    <% unless i.tattoos.empty? %>
     <%= image_tag i.tattoos.first.file.url(:small) %><br />
    <% end %>
  </li>
<% end %>

Но это просто находит первое изображение в альбоме на основе его местоположения в таблице изображений, а не номера позиции.

1 ответ

Вы можете указать order пункт при объявлении ассоциации:

class Album < ActiveRecord::Base
   has_many :tattoos, order: 'tattoos.position ASC'
end

Таким образом, первая картинка всегда будет с самой низкой позицией.

Другие вопросы по тегам