Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2005-09-01

[Rails] pagination (簡単なページ管理) を使ってみた

<URL:http://wota.jp/ac/?date=20050629#p01> を参考にして改造。

# controller
def list
  @pages, @entries = paginate(:entry, :per_page => 30, :order_by => 'bakaid DESC')
end
# view
<ul><% @entries.each do |entry| %>
  <li><%= entry.month %>月<%= entry.day %>日… 
      <%= link_to(entry.title, {:action => "view", :id => entry}) %></li>
<% end %></ul>
<%= link_to "前を表示", { :page => @pages.current.previous } if @pages.current.previous %>
<%= link_to "次を表示", { :page => @pages.current.next } if @pages.current.next %>

mixi 日記風に改造。

def list
  @pages, @entries = paginate(:entry, :per_page => 30, :order_by => 'bakaid DESC')
  @begin_idx = @pages.items_per_page * @pages.current.previous.to_i
  @end_idx = @pages.current.next ? @pages.items_per_page * (@pages.current.next.to_i - 1) :
             @entries.size + @pages.items_per_page * @pages.current.previous.to_i
end

view にはこの一行を追加。

<%= "#{@begin_idx + 1}件〜#{@end_idx}件を表示" %>

動作サンプル (もう動いてないかも)。おぉ。