, поэтому я хочу, чтобы страница отображала Phrase
, выбирая (изначально) случайным образом из базы данных.на этой странице я хочу <%= link_to "next"%>
, но мне было интересно, существует ли эффективный способ обеспечить существование следующей записи
, в настоящее время я использую только
# @phrase is current phrase
<%= link_to "next", phrase_path( Phrase.find( @phrase.id + 1 ) ) %>
да, язнаю, что я должен вызвать @next из контроллера, или, что еще лучше, иметь следующий метод в модели для вызова @ фразу.next, но это только для иллюстрации.
, но это часто приводит к ActiveRecord::RecordNotFound
ошибка, потому что некоторые фразы были удалены из БД (из-за модерации, ошибки и т. д.).Я мог бы спасти от этого и зациклить, пока он не заработает в контроллере, затем передать его или что-то в этом роде, но это кажется плохим решением, и не особенно «railsy»
, есть ли удобное решение, которое кто-нибудь нашел
понял это
на основе эта ссылка, которая немного устарела, использует named_scope
со спины в рельсах 2. Сначала я переписал ее, используя новые рельсы 3scope
стиль, но затем просто изменил его на метод.только что использовал
def next
Phrase.where("id > ?", self.id).order("id ASC").first
end
def previous
Phrase.where("id < ?", self.id).order("id DESC").first
end