0

誰かが記事を読んで次の記事を読むことを決める簡単なブログアプリケーションで、その人物をこのリストの次の記事に連れて行きます。どのようにこれを行うことができます。私はwillpaginateとkaminariで作業しており、どちらもページネーションのための優れたプラグインです。次回と前回の記事を次回と前回のリンクにしたい

だから今、私は私が行うのですか、以下のこの

簡単なコードサンプルが

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

答えて

1

あなたが次と前のことで何を意味するかに応じて、次のと以前の記事を取得するArticleにメソッドを追加することができます - 。あなたが記事にしたいどのような順序、すなわちを

例えばcreated_atで何もあなたもIDに対してチェックしたい場合がありますので、少し単純すぎるかもしれませんその日に作成したものと同じを持っていないことを前提としていため

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] 

あなただけのIDで注文したい場合は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

私は配列のリストをページめくりたいだけです。私はちょうどartisclに行き、読んで、インデックスアクションに行くのではなく、次の記事を読むために次の記事を読んでみたいと思います。私が読んでいるものより高いイド – Uchenna

+0

ええ、それは私が思ったものです。したがって、あなたのショーページで 'link_to(" Next "、article_url(@ article.next))'を実行することができます。あなたが条件をさらに簡単にしたいと思っているIDだけであれば、IDがあなたが持っているIDとIDで注文したものよりも大きいかどうかを確認できます。 – Shadwell

+0

私は条件を設定する方法を教えてくれます – Uchenna

0

で動作するように次と前の記事をfeatches次と前のリンクを持ちたいshowアクションにあなたあなたの問題を解決するWillpaginateプラグインを使用することができます。 https://github.com/mislav/will_paginate

+0

私はちょうど配列のリストをページ分割したくありませんartisclに行き、インデックスアクションに行くのではなく、もっと見るために次のボタンをクリックして次の記事を読んでみたいと思います。 – Uchenna

+0

OPは質問のwill_paginate宝石について言及しています。 –

関連する問題