在Controller中获取嵌套模型的计数

时间:2010-10-23 05:24:01

标签: ruby-on-rails ruby-on-rails-3

我有以下两种模式:

photoalbums
 has_many:photos

photos
 belongs_to:photoalbums

当我显示所有photoalbums的列表时,我还要说明相册中有多少张照片:

控制器:

def index
    @photoalbums = PhotoAlbum.all
end

查看:

<%# Get the number of photos per this album %>
<% @photos = Photo.find_by_photo_album_id(photoalbum.id) %>
<li><%= @photos.count %> Photos</li>

以上内容不允许我在视图中执行@photos.count@photos.record

在控制器中有更好的方法吗?我在控制器中想过可能是include(:photos)

感谢!!!

1 个答案:

答案 0 :(得分:2)

解决方案1)在您的视图中,您需要写下这个..

<% @photos = Photo.find_all_by_photo_album_id(photoalbum.id) %>
<li><%= @photos.count %> Photos</li>

而不是find_by_photo_album_id find_all_by_photo_album_id。

解决方案2)

In controller

def index
   @photoalbums = PhotoAlbum.find(:all,:include => :photos)
end

In View

<% @photos = photoalbum.photos %>
<li><%= @photos.count %> Photos</li>