131213_01:アジャイル開発本
6.2 イテレーションA2
dbディレクトリのseeds.rbを編集。
次にproductsテーブルにデータを読み込むためのコードを記述。
画像以下URLよりダウンロードし、対応する場所にコピー。
http://media.pragprog.com/titles/rails4/code/rails31/depot_a/app/assets/images/
productsテーブルにテストデータを流し込む
depot> rake db:seed
ここから商品リストの外観を整える。
app/assets/stylesheetsディレクトリにある、スタイルシートproducts.css.scssを埋める。
// Place all the styles related to the Products controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
/* START_HIGHLIGHT */
.products {
table {
border-collapse: collapse;
}
table tr td {
padding: 5px;
vertical-align: top;
}
.list_image {
width: 60px;
height: 70px;
}
.list_description {
width: 60%;
dl {
margin: 0;
}
dt {
color: #244;
font-weight: bold;
font-size: larger;
}
dd {
margin: 0;
}
}
.list_actions {
font-size: x-small;
text-align: right;
padding-left: 1em;
}
.list_line_even {
background: #e0f8f8;
}
.list_line_odd {
background: #f8b0f8;
}
}
/* END_HIGHLIGHT */
最後に、このスタイルシートで使われているproductsクラスを定義する。
app/views/layouts/application.html.erb
9行目を変更
<body class='<%= controller.controller_name %>'>
簡単な表ベースのテンプレートを使う。
app/views/products/index.html.erbを編集
<h1>Listing products</h1>
<table>
<% @products.each do |product| %>
<tr class ="<%= cycle('list_line_odd', 'list_line_even') %>">
<td>
<%= image_tag(product.image_url, class: 'list_image') %>
</td>
<td class="list_description">
<dl>
<dt><%= product.title %></dt>
<dd><%= truncate(strip_tags(product.description),
length: 80) %></dd>
</dl>
</td>
<td class="list_actions">
<%= link_to 'Show', product %><br/>
<%= link_to 'Edit', edit_product_path(product) %><br/>
<%= link_to 'Destroy', product,
confirm: 'Are you sure?',
method: :delete %>
</td>
</tr>
<% end %>
</table>
<br />
<%= link_to 'New Product', new_product_path %>
ブラウザを起動して確認。
http://localhost:3000/products
6章でやったこと
- 開発用のデータベースを作成
- マイグレーションを使用し、開発用データベースにスキーマを作成して修正
- productsテーブルを作成し、scaffoldジェネレータを使って、このテーブルを管理するアプリケーションを作成
- 商品リストを表示するために、アプリケーション全体のレイアウトと、コントローラに対応するビューを更新