has_many :モデル名さっきのhas_aと全く同じですね。これにより、関連付けたモデルの複数の項目がまとめてこのモデルに関連付けられます。――では、実際にやってみましょう。Makerクラスを下のリスト欄のように修正してみてください。
<% maker.good.each do |obj| %>maker.goodからeachでオブジェクトを順に取り出し処理していることがわかりますね。has_manyは、関連するモデルのインスタンスをすべて取り出します。このため、それらを配列にまとめてgoodに設定されるようになっているのです。これは、たとえ得られたインスタンスが1つ(あるいはゼロ)であったとしても同様で、必ず配列の形になっています。
<b><%= obj.name %></b><br>
<%= obj.memo %><hr />
<% end %>
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
※Makerクラスの修正
class Maker < ActiveRecord::Base
attr_accessible :memo, :name, :site
has_many :good
end
※index.html.erbの修正
<table>
<tr>
<th>Name</th>
<th>Site</th>
<th>Memo</th>
<th>Goods</th>
<th></th>
<th></th>
<th></th>
</tr>
<% @makers.each do |maker| %>
<tr>
<td><%= maker.name %></td>
<td><%= maker.site %></td>
<td><%= maker.memo %></td>
<td>
<% maker.good.each do |obj| %>
<b><%= obj.name %></b><br>
<%= obj.memo %><hr />
<% end %>
</td>
<td><%= link_to 'Show', maker %></td>
<td><%= link_to 'Edit', edit_maker_path(maker) %></td>
<td><%= link_to 'Destroy', maker, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</table>
| << 前へ | 次へ >> |