例えば、オンラインストアのカタログページ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 件のコメント:
コメントを投稿