おこづかい帳アプリを作る(3)
今日やること
- ページング処理の追加
- 日付、通貨の表示フォーマットの修正
ページング処理の追加
2.0からページング処理が本体から外れているので、いま一番メジャーそうなwill_paginateを使いたいと思います。作業にあたっては以下のページを参考にさせていただきました。
- will_paginateのインストール方法が変わっていた - idesaku blog
- Instration - will_paginate - GitHub
- Usage Example - will_paginate - GitHub
インストール
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 %>
ここに、flickrやapple風のスタイルシートのサンプルがあるので、読み込むようにするとちょっとかっこ良くなります(↓flickr風)。
通貨、日付のフォーマット
ビューで金額と日付のフォーマットを変更します。
通貨のフォーマット
通貨のフォーマットにはNumberHelperを使います。
"1,000円"のよう表示したいと思います。
<%= number_to_currency(entry.amount, # 表示するデータ :precision => 0, # 桁数(少数は表示しない) :unit=>"¥", # 単位 :format=>"%u %n") # フォーマット(%u:単位、%n:値)%>