2017-03-27 3 views
0

のカスタムレンダリングだから基本的に私は私のインデックスページのためにこれを持っている:と呼ばれるデシベルで追加boolean型の列があります:私は基本的にこのように動作しますソフト削除を、実装 ルビー:コントローラ

def index 
    @articles = Article.paginate(:per_page => 15, :page => params[:page]) 
end 

is_activeであり、デフォルトではtrueです。削除は書き換えられ、破棄ではなく偽に変更され、ソフト削除されたエントリを表示するページになります。

問題:私はのpaginate見つかり、現在の回避策は、単に私のindex.html.erbに

<% if article.is_active %> 

を追加することです。欠陥は次のとおりです。まだページがあると思われるものを削除すると、15のエントリの代わりに14が表示されます。さらに悪いことに、ページの削除を解除すると、同じ量の空白ページが表示され、適切なページを表示することができます(たとえば、最初のエントリが1ではなく14ページに表示されることがあります)。それは重大な欠陥ではありませんが、あまり書き直すことなく修正できるかどうかを知りたいと思います。

多分私はコントローラの中で何かを変えることができるので、出力したいものに応じてそのフィールドで真または偽のエントリを送信しないでしょうか?

答えて

2

このフィールドでフィルタリングできませんか?あなたが唯一のアクティブな記事を取得するために、スコープまたは句を使用することができます

@articles = Article.where(is_active: true).paginate(per_page: 15, page: params[:page]) 
+1

が魅力のように働きました!ありがとう!私はちょうどレール上のルビーのハングを取得しているが、プログラミングに全く新しいではないので、ちょうど.allまたは.paginate以上のものがあると思った。 – user3735111

+0

http://guides.rubyonrails.org/active_record_querying.htmlこのガイドはスタートするのに最適な場所です。幸運を祈る – Iceman

0

def index 
    @articles = Article.where("is_active = ?", true).paginate(:per_page => 15, :page => params[:page]) 
end