第?部 アプリケーションを構築する

第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アプリケーション開発
RailsによるアジャイルWebアプリケーション開発前田 修吾

オーム社 2006-02-25
売り上げランキング :


Amazonで詳しく見る
by G-Tools