Перебирая массив объектов и находя первый элемент с номером позиции - PullRequest
0 голосов
/ 30 декабря 2011

Хорошо, поэтому я не знаю, как это сформулировать, но:

У меня есть массив альбомов, и у каждого альбома есть много изображений.Я использую рубиновый камень 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 Ответ

2 голосов
/ 30 декабря 2011

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

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

Таким образом, первое изображение всегда будет с самым низким положением.

...