我有一张photo_album 它有几张照片,ID:4,9,10,11,31 - 全部用于photo_album:3
我的照片控制器中的DEF SHOW有以下内容:
@photo = @photoalbum.photos.order("created_at ASC").paginate :page => params[:page], :per_page => 1
问题是,如果网址是:/ photo_albums / 3 / photos / 10上面的代码从记录4开始,当我希望它在10处启动will paginate时,就像在URL中一样。
任何人都知道如何在will_paginate中设置起始ID?
由于
更新
另外,注意到PAGINATION链接正在呈现链接:
/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 - 所需的用户流程
更新3 - 基于流程的控制器
这听起来不错吗?仍然在它,没有运气。感谢任何建议。
答案 0 :(得分:1)
正如Jesse所指出的那样,您应该使用index
来显示照片列表,而不是show
,即使您每页只显示一张照片。
使用控制器中的finder在视图中为您提供一个WillPaginate对象:
def index
@photos = @photoalbum.photos.order("created_at ASC").paginate :page => params[:page],
per_page => 1
end
在视图中,will_paginate知道has_many关系,因此它将包含父photo_album的参数
<%= 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}) %>
中的更多信息
修改强>
好的,谢谢,但是如何展示一个 “STARTING RECORD”意思是一张专辑 有8张照片,用户点击进入 见照片4,如何显示照片 在正确的分页顺序中,使用 INDEX?
您可以将页码添加到相册视图中的链接。也许是这样的:
<% @photos.each_with_index do |photo, index| do %>
<%= link_to "View photo",
photo_album_photos_path(@photo_album, :page => index) %>
<% end %>
答案 1 :(得分: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))