肌寒い一日
今日の作業
RailsによるアジャイルWebアプリケーション開発
カタログの表示
わからなかったこと
今日のうちに解決できた。
明日やること
カートの作成
今日の作業でわかったこと
カタログ表示をするときの考え方を知れ、
またfind()メソッドの引数にparams[:id]
以外のものを取る使いかたも知ることができました。
調べたことのまとめ
>scaffoldで吐いたcontrollerでcreate,update,destroyがうまくいったときにredirect_toを使ってる理由
リダイレクトした場合、クライアントのブラウザ上には最終的に、リクエストしたURLではなく、リダイレクト先
のURLが表示されるので、Webブラウザでのリロード時にリダイレクト先のページのみリロードされるので、
二重処理を防げるため。
verify :method => :post, :only => [ :destroy, :create, :update ], :redirect_to => { :action => :list }
Postで送られてきたとき:onlyを実行する。
それ以外は:redirect_toを実行
プレースホルダ
後で正式なものに置き換えるまでの間、とりあえず使用するダミー。
sprintf()メソッドとは
フォーマット化された文字列を返す
sprintf("%0.2f", 1000)
は『1000.00』という文字列を返す。
詳しくは
http://search.net-newbie.com/php/function.sprintf.html
カタログ表示
DBにある販売可能な全ての商品をリストとして取り出しテーブルを表示する
ビュー内のコードに渡す。
まず販売可能な商品リストをモデルに要求できるものとしてコントローラーに
def index @products = Product.salable_items end
次にsalable_items()メソッドをモデルに定義する。
def self.salable_items find(:all, :conditions => "date_available <= now()", :order => "date_available desc") end このfind()メソッドで販売可能か判断 :all → 条件に一致する全ての行を取得 :conditions → 検索条件 条件では販売日付が未来じゃないことをチェックするため、 現在の日時を調べるMySQLのnow()関数を使う :order → ソート 詳しくはRuby on Rails 入門 P60 http://www.amazon.co.jp/Ruby-Rails%E5%85%A5%E9%96%80%E2%80%95%E5%84%AA%E3%81%97%E3%81%84Rails%E3%81%AE%E8%82%B2%E3%81%A6%E6%96%B9-%E8%A5%BF-%E5%92%8C%E5%89%87/dp/4798013951 このfind()メソッドはDBから返された各行に対応するProductオブジェクトが収められた配列を返すので ビューでその配列から情報を取り出して表示する