「RailsによるアジャイルWebアプリケーション開発」8章まで読了
↑のsessionの問題以外は特になし。自由課題をやる。
新しい変数をセッションに加えて、ユーザが何回indexアクションにアクセスしたか記録してみましょう。
store_controller.rbのindexに処理を追加。
def index @products = Product.find_products_for_sale if session[:counter].nil? then session[:counter] = 1 else session[:counter] += 1 end end
上記のカウンタをテンプレートに渡して、カタログページの上部に表示してみましょう。
views/store/index.html.erbに一行追加。
<h1>Pragmaticカタログ</h1> <%= session[:counter] %>回目の表示です。 <% for product in @products -%>
ユーザがカートに何か入れたときにカウンタが0にリセットされるようにしましょう。
store_controller.rbのadd_to_cartに一行追加
def add_to_cart begin product = Product.find(params[:id]) rescue ActiveRecord::RecordNotFound logger.error("無効な商品#{params[:id]}にアクセスしようとしました") redirect_to_index("無効な商品です") else @cart = find_cart @cart.add_product(product) session[:counter] = nil end end
エラーの時はリセットしない仕様です。
テンプレートを変更して、カウンタの値が5を超過したときにだけカウンタが表示されるようにしましょう。
views/store/index.html.erbを今度はこうしてみる。
<h1>Pragmaticカタログ</h1> <% if session[:counter] >= 5 then %><%= session[:counter] %>回目の表示です。 <% end %> <% for product in @products -%>
JSPチックやなあ。