[Rails][Tips] will_paginateのAjax対応

いま、とあるサイトのリニューアル案件に関わっておりまして、これがRailsで構築されています。このサイトがサービスインしたのは2006年とRailsを利用したサイトとしては結構古くて、当時はRailsのバージョンも1.1くらいだったと記憶しています。そんな時代のサイトなので、当然ながらRailsもバージョン1ベースで動いています。

さすがに、いつまでもそのバージョンで稼働を続けるのもメンテナンシビリティから考えてあまり好ましくないと思われましたので、今、私の手でRailsのバージョンを2.3.4に対応させる作業をリニューアルの作り込みと並行して行っています。

そんな中で、割合にインパクトがあるのが、Rails2.0で標準から外されてしまったページネーション機能(Googleの検索結果に代表されるような、多数の問い合わせ結果を一定件数ずつのページに分けて表示する機能)への対応です。

もちろん、2.0登場当時に、対応としては「will_paginate」プラグインを入れればほとんど同じ感覚でページネーション機能が使えるということはよく知られています。しかしながら、該当のサイトはAjaxを多用していますので、will_paginateで生成したページナビゲーション(<前へ 1 2 3 4 … 10 次へ> のようなリンクですね)からのリクエストをAjaxに対応させる必要があります。とはいえ、ページナビゲーションのリンクは will_paginateメソッドが自動生成するため、そのままではAjaxに対応させることができないように思えます。

困ったときはGoogleで検索・・・と「will_paginate ajax」とかのキーワードで検索してみたところ、いくつか対応方法が記されたサイトがあったのですが、私のやり方がいけないのでしょうか、今ひとつうまくいきませんでした。

途方に暮れかけたのですが、考えてみると、公式サイトを見に行っていなかったことに気がつきました。見に行ってみますと、そのものずばりなページがありました。

Ajax Pagination

書かれている方法を試して、無事に解決することができました。灯台もと暗しというか、何でもとりあえず検索から始めるというのも、善し悪しだなと思った日でした。

http://wiki.github.com/mislav/will_paginate/ajax-pagination