現在、以下の画像のようなものをwill_paginateを用いてページに表示しております。画像の上にはまた別のフォームなどが存在しています。
適用ボタンが押された場合に入力範囲のデータのみを表示できるようにwhereメソッドでデータベースを絞りrenderメソッドで再表示しています。
ここで問題が起きているのですが、この再表示後、データベース自体はきちんと絞られ下に表示されているページ数も変わりました。しかし、ページ番号を押すと、データの表示が初期状態(全て標示されている状態)へと戻ってしまいます。
質問なのですがデータベースを再表示する際にはrenderメソッドを使うのは間違いなのでしょうか。正しいやり方をご教示いただければ幸いです。
よろしくお願いいたします。
Ruby
1# user_controller.rb 2 3# 適用ボタンの処理(where内も実際は取得したパラメーターで行うつもりです) 4def select 5@maildbs = Maildb.where(date: "2016-11-15").paginate(page: params[:page], per_page: 10) 6 7// ページを再表示 8render 'user/personal' 9 10end
{"utf8"=>"✓", "authenticity_token"=>"dXd7s(省略)", "from_date(1i)"=>"2017", "from_date(2i)"=>"9", "from_date(3i)"=>"1", "to_date(1i)"=>"2017", "to_date(2i)"=>"9", "to_date(3i)"=>"1", "commit"=>"適用","controller"=>"user", "action"=>"update", "id"=>"XXXXXXX"}
Ruby
1 2def select 3# 適用ボタンが押された際にparamsから日付の値を取りデータ型に直してwhere句で絞込みをしている 4@from = Date.new(params[:"from_date(1i)"].to_i, params[:"from_date(2i)"].to_i, params[:"from_date(3i)"].to_i) 5@to = Date.new(params[:"to_date(1i)"].to_i, params[:"to_date(2i)"].to_i, params[:"to_date(3i)"].to_i) 6@maildbs = Maildb.where(date: @from..@to).paginate(page: params[:page], per_page: 10) 7 8# このような場合検索条件をパラーメータでという部分がわかりません 9ご教示いただいた 10@params_for_select = {:xxx => params[:xxx]} 11部分が 12@params_for_select = where(date: @from..@to) 13のような形ですとイメージが沸くのですが…… 14params[:xxx]として一つの値を渡しても検索条件につながらないのではと考えてしまいます 15 16 17end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/01 02:44
2017/09/01 03:54
2017/09/01 05:43
2017/09/01 06:47
2017/09/01 09:22
2017/09/01 13:24
2017/09/02 14:11
2017/09/04 05:15