假设我只是rails g scaffold book name:string about:text
在“显示”视图上运行,我将如何实现一个按钮以转到模型中的下一个项目。
我不能简单地这样做@next = @book.id + 1
,因为如果@book.id = 2
(例如)我点击了 id 为 3 的书上的销毁。这将导致页面损坏。
假设我只是rails g scaffold book name:string about:text
在“显示”视图上运行,我将如何实现一个按钮以转到模型中的下一个项目。
我不能简单地这样做@next = @book.id + 1
,因为如果@book.id = 2
(例如)我点击了 id 为 3 的书上的销毁。这将导致页面损坏。
你可以做:
@next = Book.first(:conditions => ['id > ?', @book.id], :order => 'id ASC')
记得检查@next 是否不为零
为了更酷,您可以在模型中创建一个方法,如下所示:
def next
Book.first(:conditions => ['id > ?', self.id], :order => 'id ASC')
end
那么如果你有@book,你应该能够像调用它一样
@book.next
最近没有在 RoR 中写过任何东西,但这对我来说看起来很合理;)