おこづかい帳アプリを作る(3)

今日やること

  • ページング処理の追加
  • 日付、通貨の表示フォーマットの修正

ページング処理の追加

2.0からページング処理が本体から外れているので、いま一番メジャーそうなwill_paginateを使いたいと思います。作業にあたっては以下のページを参考にさせていただきました。

インストール

2.1から依存するライブラリを管理できるようになったそうで、config/environment.rbに以下の記述を追加して、"sudo rake gems:install"コマンドでインストールできます。

Rails::Initializer.run do |config|
  config.gem 'mislav-will_paginate', :version => '~> 2.3.2', :lib => 'will_paginate', 
    :source => 'http://gems.github.com'
end
使ってみる

app/controllers/entries_controller.rbのindexメソッドでpaginateを使用するように変更します。

class EntriesController < ApplicationController
    @entries = Entry.paginate :all, :page => params[:page], :per_page => 10, :order => 'occur_at DESC' # ココを変更

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @entries }
    end
  end
  # 省略
end

per_pageで1ページの表示件数を指定します。これはモデルクラスに記述することもできます(Usage Example参照)。
app/views/entries/index.html.erbにページング用のナビゲーションの表示を追加します。

 <%= will_paginate @posts %>

ここに、flickrapple風のスタイルシートのサンプルがあるので、読み込むようにするとちょっとかっこ良くなります(↓flickr風)。

通貨、日付のフォーマット

ビューで金額と日付のフォーマットを変更します。

通貨のフォーマット

通貨のフォーマットにはNumberHelperを使います。
"1,000円"のよう表示したいと思います。

<%= number_to_currency(entry.amount, # 表示するデータ
                :precision => 0,     # 桁数(少数は表示しない)
                :unit=>"",          # 単位
                :format=>"%u %n")    # フォーマット(%u:単位、%n:値)%>

こんな感じになります。

日付のフォーマット

入力したデータの一覧は月毎に見られるようにしたいので、Dateクラスのstrftimeメソッドで日にちのみ表示するようにします。

<%=h(entry.occur_at.strftime('%d日')) %>

こんな感じになります。