チェックアウト

今日の作業

チェックアウト機能の実装(続き)
発送機能の実装

今日の作業でわかったこと

今日はRailsによるアジャイルWebアプリケーション開発の本に載っていない
プラグイン(ActiveHeart)をたまたま見つけあったほうがいいなと思いインストールした。
より良いアプリにしていくにはこういった機能をどんどん追加していくことが必要だ。
そのためにはどんどん知識を増やさなければ!

明日やること

発送機能の実装(続き)
ユーザ管理

調べたことのまとめ

ActiveHeart

error_messages_for()についてRuby on Rails入門で調べたら、
そのメソッドに関しての説明ではなくActiveHeartっていうプラグインの紹介があった。
error_messages_for()やARの検証機能で表示されるメッセージを日本語化してくれる。

$ ./script/plugin install http://svn.rails2u.com/public/plugins/trunk/active_heart/

でインストールするだけでOK。

カラム名も日本語化するためにはmodelにset_field_namesでカラム名に対応する日本語を定義する。

class Order < ActiveRecord::Base
  has_many :line_items
  
  set_field_names :name => '名前', :pay_type => '支払方法', :address => '住所', :email => 'E-メール'
  validates_presence_of :name, :email, :address, :pay_type
end

http://jp.rubyist.net/magazine/?0012-RubyOnRails
このプラグインわかりやすくてすごく簡単だった。

チェックアウトページでカート内容表示

コンポーネントを使用すると、カートの内容を表示するコードを一度だけ記述して、
それを二ヵ所から呼び出すことが可能になる。

まずcheckout.rhtmlに

<%= render_component(:action => "display_cart",
		     :params => {:context => :checkout})%>

paramsを追加するのはdisplay_cart()でレイアウトを使用しないように指示するため

  def display_cart
    @cart = find_cart
    @items = @cart.items
    if @items.empty?
      redirect_to_index('現在、カートに商品は入っていません')
    end
    if params[:context] == :checkout
      render(:layout => false)
    end
  end

render_component()によってdisplay_cart()が呼び出されるときは
必ずparams[:context] == :checkoutが成立するので:layout => falseとなる。

今日の一言

明日はいよいよRubyビジネス・コモンズの設立総会が開催される。
僕は出席しないが先輩方がプレゼンをする。
内容としては実際にRailsを使った案件の話や作ったプラグインの話をする。
会場には300〜400人の人が集まるらしい。
今後は僕も大いに関わっていくコミュニティーの発足である。
なのでRubyRailsの発展に貢献できるコミュニティーにしていけるように
僕自身も成長していきたい。