2011年1月25日火曜日

Rails:覚書 レイアウト(テンプレート)を適用する

Railsでページにレイアウトを追加する
例えば、オンラインストアのカタログページshopにテンプレートのレイアウトを適用したい場合、

/project名/app/views/layouts/shop.html.erb

を作成します。
shop は事前に controller と view が作成されているものとします。

ちなみにコントローラを作成する場合は scaffold ではなく、script/generate controller shop index で作成します。ここで index はアクションが指定されていない場合に index が呼び出される仕組みになっているからだそうです。
また、controller の作成を実行しても、view は作成されないので、例えば

/project名/app/views/shop/index.html.erb

<h1>手作り家具カタログ</h1>

<% for product in @products -%>
  <div class="entry">
    <%= image_tag(product.image_url) %>
    <h3><%=h product.title %></h3>
    <%= product.description %>
    <div class="price-line">
    <span class="price"><%= product.price %></span>
  </div>
<% end %>

を前もって作成しておかなければなりません。

shop.html.erb は例えばこんな感じです。


<html>
<head>
  <title>手作り家具工房 オンラインストア</title>
  <%= stylesheet_link_tag "depot", :media => "all" %>
</head>
<body id="shop">
  <div id="banner">
    <%= image_tag("logo.jpg") %>
    <%= @page_title || "手作り家具工房 商品" %>
  </div>
  <div id="columns">
    <div id="side">
      <a href="http://www.evanista.com">ホーム</a><br />
      <a href="http://www.evanista.com/faq">よくある質問</a><br />
    </div>
    <div id="main">
      <%= yield :layout %> #<=ここにindex.html.erbの内容が出力されます
    </div>
  </div>
</body>
</html>


スタイルシートを作成していないので、これではまだ不十分ですが、
http://localhost:3000/アプリケーション名/shop
にアクセスすると、テンプレートが適用されたページが表示されます。

0 件のコメント:

コメントを投稿