Я хочу иметь следующую и предыдущую ссылку, которая описывает следующую и предыдущую статью - PullRequest
0 голосов
/ 22 февраля 2012

В простом приложении блога, где кто-то может прочитать статью и принять решение прочитать следующую статью, не просматривая список статей снова, но нажав кнопку «Далее», и он переместит человека к следующей статье в этом списке. Как это может быть сделано. Я работал с willpaginate и kaminari, и они оба являются отличными плагинами для нумерации страниц.

Так что теперь в действии шоу я хочу иметь следующую и предыдущую ссылку, которая описывает следующую и предыдущую статью, как мне сделать это

простой пример кода ниже для работы с

def show
  @article = Article.find(params[:id])
end

Ответы [ 2 ]

1 голос
/ 22 февраля 2012

Вы можете добавить метод к Article, чтобы получить следующую и предыдущую статьи, в зависимости от того, что вы подразумеваете под следующей и предыдущей - то есть, в каком порядке вы хотите, чтобы статьи были.

например. created_at используется для определения порядка

def next
  self.class.find(
    :first, 
    :conditions => ["created_at > ?", self.created_at], 
    :order => 'created_at, id')
end

def previous
  self.class.find(
    :first, 
    :conditions => ["created_at < ?, self.created_at],
    :order => 'created_at desc, id desc')

Это предполагает, что ничто не было создано на тот же день, что может быть слишком упрощенным, поэтому вы можете захотеть проверить и идентификатор тоже. Что-то вроде:

    :conditions => ["created_at > ? or (created_at = ? and id > ?)", self.created_at, self.created_at, self.id]

Если вы просто хотите заказать по идентификатору, то это еще более тривиально, так как идентификаторы никогда не могут быть одинаковыми:

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

def previous
  self.class.find(:first,
    :conditions => ['id < ?', self.id],
    :order => 'id desc')
end
0 голосов
/ 22 февраля 2012

Вы можете использовать плагин Willpaginate, который решит вашу проблему.https://github.com/mislav/will_paginate

...