2016-05-27 9 views
0

私は、ユーザーが指定したいくつかのパラメータに基づいてフィルタリングしているモデルを持っています。フィルタリングはうまく動作しますが、一度は ページネーションを使い始めます。最初のページのレコードだけがフィルタリングされ、その他のものは無視されます。 これは、フィルタリングのためのコントローラで私のコードです:ページ区切りのみのフィルタリングモデルのフィルタリング第1ページのレール3

@start_date = params[:start_date] 
@registers = Register.all.order("payment_date DESC").page(params[:page]).per(params[:all] ? nil : Kaminari.config.default_per_page) 
@registers.delete_if { |r| !(r.payment_date <= @end_date && r.payment_date >= @start_date) if (@start_date.present? && @end_date.present?) } 

は、ビューでは、私は、リストをページ分割する<%= paginate @registers %>を使用しています。

+0

2番目のページをクリックすると、URLのend_dateおよびstart_dateパラメータが表示されます。カミナリは自動的にそれらを渡しますか? –

+0

日付フィルタリングは、そのようなページ付けと一緒には機能しません。データセットをすべての条件を含むクエリとして記述し、その上にページを貼り付けます。例えば。 per_page(...) ' – Raffael

+0

ページ数は何ページにする必要がありますか?データベースのレコード数に応じて存在するでしょうか? – Raffael

答えて

0

@Raffaelが上記のコメントで述べたように、@registers.delete_if(..)の代わりに@registers = @registers.where(..)を使用する必要がありました。なぜなら、あなたのページ番号を上げてしまうからです。