2009年4月13日月曜日

DRYとか。

~DRYの原則~
繰り返しのコードを書いていることに気がついたら、
いったん手をとめて「1つのテンプレートにロジックが入りすぎていないか」と自問してみる。
~~

はいはい。今日も勉強してて新しく知ったこと。

部分テンプレートをレンダリングするメソッドにはコレクションを渡すことができ、
そのメソッドはコレクション内の各項目に対して1回ずつ自動的にテンプレート
を呼び出すことができるらしい。

今まで部分テンプレートを使い、さらにイタレータで繰り返しを作っていたけど、そんな必要ない。

>> add_to_cart.rhtml
<%= render :partial => "cart_item", :collection => @cart.items %>

とすると、_cart_item.rhtml の部分テンプレートが@cart.itemの要素数回レンダリングされる。
さらに、_cart_item.rhtml内では、@cart_itemsのインスタンスがインスタンス名 cart_itemとして使うことができる。
これはCoCの原則ですね。

例:

>> _cart_item.rhtml
<%= cart_item.quantity %>

とすると、@cart_itemsの各インスタンスcart_itemのquantity属性が表示される。

0 件のコメント: