第?部 アプリケーションを構築する
第7章 タスクB:カタログの表示
顧客向けのカタログリストを作ります。
storeコントローラーとindexメソッドを
ruby script/generate controller Store index
でつくります。
コントローラーにindexメソッドを作成しておくと、URLにコントローラー名まででアクセスすると、indexメソッドが実行される。
index.htmlと同じ感覚ですな。
で、indexメソッドに商品リストを取得するコードを書きます。
こんな感じですな。
def index @products = Product.salable_items end
Productモデルのsalable_itemsメソッドを呼び出し、複数のProductを取得します。
Productモデルのsalable_itemsメソッドはこんな感じ。
def self.salable_items find(:all, :conditions => "date_available < now()", :order => "date_available desc") end
:conditionsがWHERE句の内容(ANDとかORはそのまま書けるのかな・・?)
:orderがORDER BYの内容ですな。
now()はMySQLの関数でっす。
で、あとはビューをつくりますと。
コントローラーのメソッドで定義したインスタンス変数がそのままビューのインスタンス変数としてそのまま使える、というところがRails内部のウリのひとつということなんですね。
ビューでは@productsをfor文で回して、一覧を表示します。
で、つぎにビューのレイアウトをつくりたいと。
StrutsのTilesと同じ感覚なんですかね。Tilesよう知らんのですが。
レイアウトはapp/views/layoutの下にコントローラーと同じ名前(store.rhtml)でつくります。
このビューの中で、<%= @content_for_layout %>を書くと、storeコントローラーのindexメソッドを呼んだときには対応するビュー(index.rhtml)が表示されます。
アプリ全体で同じレイアウト使いたいときはどーするんだべ??
スタイルシートはpublic/stylesheets以下に配置。
この本、サンプルコードは印字されてるんだけど、実際にファイルがCD-ROMとかで添付されてるわけではないので、かなりCSS書くのはメンドクサイ。
なんで省略!
次の章ではセッション情報管理とかテーブルのリレーションをやってみるみたいですよ。
RailsによるアジャイルWebアプリケーション開発 | |
前田 修吾 オーム社 2006-02-25 売り上げランキング : Amazonで詳しく見る by G-Tools |