Ruby on Rails: получить следующий элемент в модели - PullRequest
5 голосов
/ 26 августа 2011

Скажем, я просто запустил rails g scaffold book name:string about:text В представлении 'show', как бы я реализовал кнопку для перехода к следующему элементу в модели.

Я не могу просто сделать @next = @book.id + 1, потому что, если @book.id = 2 (например), и я нажму "уничтожить" книгу с идентификатором 3. Это приведет к поломке страницы.

1 Ответ

12 голосов
/ 27 августа 2011

Вы можете сделать:

 @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, но мне это кажется разумным;)

...