2 flat logo on transparent 256
2018-01-11

【初心者・独学者向け】Ruby On RailsのModelを活用し前後のレコードを取得して次へ前へのリンクを設定する

265667

はてぶやWordPressなどのブログサービスには記事の下部に 次へ、前へ のリンクが設定されています。 RubyOnRailsで設定しようとすると、標準APIやgemでは提供されていなかったので、ActiveRecordのModelを利用して、前後のレコードを取得します。

編集する場所

1:model(今回はArticle modelとする)

2:view (今回はArticle show.htmlとする)

ActiveRecordのModelを変更する

class Article < ActiveRecord::Base
 # ...
  def previous
    Article.where("id < ?", self.id).order("id DESC").publish.first
  end

  def next
    Article.where("id > ?", self.id).order("id ASC").publish.first
  end
end

Articleのshow htmlを変更する

初回の記事と「前の記事」 最後の記事は「次の記事」は発生しないので、前の記事と次の記事が存在するかのチェックを行います。

show.html.slim

- if @article.previous.present?
  div= link_to article_path(@article.previous.id), class: 'link' do
   = @article.previous.title

- if @article.next.present?
  div= link_to article_path(@article.next), class: 'ink' do
   = @article.next.title
前の記事
次の記事