2011-08-26 44 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

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