循环遍历一组对象并找到第一个带位置编号的项目

时间:2011-12-30 15:32:36

标签: ruby ruby-on-rails-3 acts-as-list

好的,所以我不确定如何说出来,但是:

我有一系列专辑,每张专辑都有很多图片。我正在使用ruby gem acts_as_list来允许用户对相册中的图像进行排序,因此每个图像都有一个位置。进行排序的方法是在专辑图像和非专辑图像之间进行设置,并非所有专辑都会有一个位置为1的图像。

所以,我想要的是列出所有专辑,然后只显示该专辑中最早位置的图像。但是,没有方法可以找到第一个位置。

以下是我现在所拥有的:

<% @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 个答案:

答案 0 :(得分:2)

您可以在声明关联时指定order子句:

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

这样,第一张图片将离开最低位置。