2010-10-30 89 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