update.発生した問題will_paginateをrailsアプリに組み込んでいるが、paramsを用いた検索を併用すると・・・2ページ目以降のurlがおかしい?例えば、/search/myloversというページでparamsを用いたDB検索を行う。そのとき、発行されるurlは、/search/mylovers?age_gte=20&age_lte=25&occupation=modelといった感じになる。このとき、will_paginateを用いて複数ページに結果を分割していたとして、will_paginateが作成する「次へ」ボタンのurlは、/search/mylovers?age_gte=20&age_lte=25&occupation=model&page=2とはならないときがある。原因url_forヘルパーがroute.rbの設定に依存することwill_paginateはurl_forヘルパーを用いてurlを作成し、それをボタンに埋め込む。search/indexみたいな設定をしていた場合(つまり、params[:occupation]をurl内に組み込んでいた場合)、url_forヘルパーは、/search/mylovers?age_gte=20&age_lte=25&occupation=modelのかわりに、/search/mylovers/model?age_gte=20&age_lte=25を返してくる。routes.rbでの設定を逆に解釈する。routes.rbでは、「もし、/search/myloversの後ろになんかひっついてきたら、それをparams[:occupation]として解釈してね」という指示を与えたつもりが、url_forヘルパーは気を回して「もし、params[:occupation]が渡ってきたら、search/mylovers/の後ろに引っ付けるようにしよう」としてしまう。基本的にはそれでも問題ない場合が多いが、例えば、params[:occupation]が配列形式である場合には、このurl_forヘルパーは壊れる。/search/mylovers?occupation=model&occupation=nurseというurlを発行すると、url_forヘルパーは、/search/mylovers/modelnurseを返してくる。これは無効urlとなり、ページネーションが動作しないことになる。解決策will_paginate内で作られるurlに問題があるので、gemのオーバーライドをする。オーバーライドとは、既存のメソッドの上書きのようなもの。オーバーライドのやり方は以下のステップ。上書き内容を書く今回は、app/helper内にファイルを用意した。次に、gem内部のどのメソッドを修正したいか(するべきか)を特定する。今回の場合、発行されるurlを変更したいので、urlを作成しているメソッドを探す。見つけたら、書き換えるメソッドのある場所を、module名::class名で指定する。今回はmoduleがネストしていたので、WillPaginate::ActionView::LinkRenderer。書き換えるメソッド名は「url(page)」。ここまでの段階で、上書きファイルの内容は下のようになる。endendあとは、処理の中で好きに書けば良い。今回はrequest.full_pathを使って現在のurlを取得し、お尻にparams[:page]をつける処理にした。あとは、viewのwill_paginateのrendererオプションにオーバーライドしたいやつを指定。PaginationHelper::SearchPaginationこれで完了。will_paginateはrendererオプションでオーバーライドして色々カスタマイズができる。requestStockLike1@yuquitta13言語はRubyを中心にやってます。upLoginユーザーは見つかりませんでした。