categoryとsub_categoryでそれぞれ次のようにすれば表示できます。
lang
1
2<%= @item.category.name %>
3
4<%= @item.sub_category.name %>
また、上記のようにするには前準備として、モデルでアソシエーションを定義しておく必要があります。
各モデル(各テーブル)の関係は、
- itemとcategoryは「1対N」
- itemとsub_categoryは「1対N」
という前提でアソシエーションを定義しています。
英語の単数形と複数形に注意してください。
lang
1# app/models/item.rb
2class Item < ActiveRecord::Base
3 belongs_to :category # item belongs_to :category (itemはcategoryに属する)
4 belogns_to :sub_category # item belogns_to :sub_cateogyr(itemはsub_categoryに属する)
5end
6
7# app/models/category.rb
8class Category < ActiveRecord::Base
9 has_many :items # category has_many items (categoryはたくさんのitemsを保持する)
10end
11
12# app/models/sub_category.rb
13class SubCategory < ActiveRecord::Base
14 has_many :items # sub_category has_many items (sub_categoryはたくさんのitemsを保持する)
15end
上記のようなアソシエーションを定義することで、各モデルから関連先のモデルを参照することが可能になります。
そのため、最初に記載した方法でcategoryのnameカラムを表示することができます。
lang
1$ rails console
2> item = Item.first
3> item.category # => itemが属する Categoryインスタンス
4> item.sub_category # => itemが属する SubCategoryインスタンス
5
6> item.category.name # => nameカラムの値
7> item.sub_category.name # => nameカラムの値
他にも、アソシエーションを使うことでいろいろと便利なことがあるので、
Rails Guides - ActiveRecordの関連付け(アソシエーション)
を一読するとここらへんの知識も含めいろいろと学べるかと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/01/02 15:07
2015/01/02 15:24