#june29jp

RailsのPagenationとlink_toのhtml_option

2007-12-02

最近ちょこちょこ触っているRailsの話を少しだけ書きます.検索してもあまり出てこない話なので,キーワードを散りばめつつ書いてみよう!

RailsのPagination

RailsにはPaginationという仕組みがあって,よくあるページング処理を簡単に実現できます.例えば,controller側で

# controllers/model_controller.rb

class ModelController < ApplicationController
  def index
    @model_pages, @models = paginate :models, :per_page => 10
  end
end

と書いておくと,viewの方では

# views/model/index.rhtml

  <ul>
    < %- for m in @models -%>
    <li>m.name</li>
    < %- end -%>
  </ul>

  <%= link_to 'Previous page', { :page => @model_pages.current.previous } if @model_pages.current.previous %>
  <%= link_to 'Next page', { :page => @model_pages.current.next } if @model_pages.current.next %>

と書くだけで1ページにper_page分ずつ表示してくれて,前後のページへのリンクも出せちゃうわけです.と,まぁここまではただのPaginationの話で,詳しい説明がWeb上にたくさんあるので見つかるでしょう.このPaginationはRails 2.0ではプラグイン扱いになるようですね!使い方が変わるでしょうから要チェックです.

link_toのhtml_option

さてさて,ページング処理を実装するようなサイトでしたら,AutoPagerizeに対応させたくなるのが人情ってもんです.そのためには次のページへのリンクに「@rel=”next”」を付与する必要があります.しかし! a タグは link_to メソッドで自動生成しているから,属性を付与できません!とか騒いでいたら,link_to メソッドには html_option なるものがありました.ちゃんとドキュメントを読めって話でした.

  <%= link_to 'Next page', { :page => @model_pages.current.next }, { :rel => "next" } if @model_pages.current.next %>

こうしてやればOKです.aタグにclassやidを振りたいときにもhtml_optionが必要ですね.覚えておこう.

おもしろかったら、シェアやブックマークや送金などぜひぜひお願いします。サイト運営の励みになります!

シェアや送金などお待ちしています!