2011-08-26 45 views
4

假設我只是跑了rails g scaffold book name:string about:text在'show'視圖中​​,我將如何實現按鈕以轉到模型中的下一個項目。Ruby on Rails:獲取模型中的下一項

我不能簡單地做@next = @book.id + 1,因爲如果@book.id = 2(例如),我點擊銷燬id爲3的書。它會導致一個破損的頁面。

回答

12

你可以這樣做:

@next = Book.first(:conditions => ['id > ?', @book.id], :order => 'id ASC') 

記住要檢查whever @next不是零

要更酷,你可以在模型中創建一個方法,像這樣:

def next 
    Book.first(:conditions => ['id > ?', self.id], :order => 'id ASC') 
end 

那麼如果你有@book,你應該可以調用它,就像

@book.next 

最近沒有在RoR上寫過任何東西,但是這對我來說看起來很合理;)

+0

而我正要做到這一點:http://duanesbrain.blogspot.com/2008/11/ruby-on-rails- get-next-activerecord.html –

+0

很棒,真的很棒。謝謝! –