2010-10-30 48 views
0

我有一个photo_album 其中有几张照片,编号:4,9,10,11,31 - 所有photo_album:3Will_Paginate ---设置起始记录?

我已经在我的DEF显示在我的照片控制器如下:

@photo = @photoalbum.photos.order("created_at ASC").paginate :page => params[:page], :per_page => 1 

问题是,如果URL是:/ photo_albums/3/photos/10上面的代码从第4条开始,当我希望它在10处启动意愿分页时,就像在URL中一样。

任何人都知道如何在will_paginate中设置起始ID?

感谢

UPDATE

此外,注意到分页链接被渲染链接此:

/photos/10?page=2&photo_album_id=3 

当他们应该被渲染,如:

/photo_albums/3/photos/?page=2 

这是否听起来对吗?

这里的车型档案:

class PhotoAlbum < ActiveRecord::Base 
    has_many :photos, :dependent => :destroy 

class Photo < ActiveRecord::Base 
    belongs_to :photo_album 

更新2 - 所需的用户流量...

  • #1 - 用户看到相册
  • #2,用户列表点击相册
  • #3用户看到相册中的照片列表
  • #4使用视图中点击照片,但有will_paginate显示和 默认为 照片用户点击

更新3的页码 - 基于流量控制器

  • 相册每个项目 - 天地我的相簿指数
  • 照片,每张照片的相册 - 天地我的相簿显示
  • 摄影展 - 摄影展

听起来不错?仍然在这,还没有运气。欣赏任何建议。

回答

1

由于Jesse指出,你应该使用index显示的照片,而不是show列表,即使你只是在每页显示一张照片。

使用在你的控制器取景器让你在视图中WillPaginate对象:

def index 
    @photos = @photoalbum.photos.order("created_at ASC").paginate :page => params[:page], 
    per_page => 1 
end 

在视图中,will_paginate知道的的has_many关系,所以它会包括母公司photo_album

的PARAMS
<%= will_paginate(@photos) %> 

渲染下一个链接为:

/photos?page=2&photo_album_id=3 

你可能有预计/photo_albums/3/photos?page=2,但will_paginate不使用嵌套的资源路径。这是确定的,因为URL是在同一个地方结束,即{ :controller => :photos, :action => :index, :photo_album_id => 3 }

您可以在父传递明确重写,如果必要的:

<%= will_paginate(@photos,:params => {:photo_album_id => 3}) %> 

will_paginate docs

编辑更多信息

好的感谢但如何显示 “启动录像”意味着我f一张专辑 有8张照片,并且用户点击了 查看照片4,如何以正确的分页顺序显示该照片 ,使用 的INDEX?

您可以将页码添加到专辑视图中的链接。也许这样的事情:

<% @photos.each_with_index do |photo, index| do %> 
    <%= link_to "View photo", 
    photo_album_photos_path(@photo_album, :page => index) %> 
<% end %> 
+0

好的感谢但如何显示一个“开始记录”意味着如果一张专辑有8张照片,并且用户点击查看照片4,如何使用INDEX以正确的分页顺序显示该照片? – TheExit 2010-10-31 00:06:44

+0

另外,我应该如何链接到照片浏览页面?我目前有“photo_path(photo)”,但是会进入显示页面,听起来像你说我需要使用INDEX? – TheExit 2010-10-31 00:12:45

+0

所以强调的问题是我有一个PhotoAlbum索引,它不能用于显示照片集列表并呈现照片。两个单独的意见? Right – TheExit 2010-10-31 00:21:56

0

我不确定你为什么使用Show方法。要使用分页,您应该使用PhotoAlbum控制器的Index方法。

所以你的链接应该是

link_to('Show Photos', photo_album_path(@photo_album, page=>params[:page]) 

如果你想只显示一张照片,很酷,但不使用分页。

link_to('Photo), photo_album_photo_path(@photo_album, @photo)) 
+0

感谢这很有趣。只是为了确保我清楚了解Flow。 #1 - 用户看到相册的列表,#2,用户点击相册,#3用户看到相册中的照片列表,#4使用视图单击的照片,但有will_pagine显示和默认的页码用户点击的照片。 – TheExit 2010-10-30 20:25:17

+0

鉴于以上情况,您的Link_to将在哪里?我需要帮助创建#3的照片链接? – TheExit 2010-10-30 20:26:15

+0

PhotoAlbum INDEX显示所有用户的相册列表,而不是相册中的照片列表。 – TheExit 2010-10-30 20:28:54