2016-04-06 3 views
0

私は(2)モデルItemとItem_Typeを持っています。関連するレコードに基づいてレールルートを設定します。

項目にhas_one:ITEM_TYPE

ITEM_TYPEスキーマ:

create_table "item_types", force: true do |t| 
    t.string "title" 
    t.integer "item_id" <--- 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

私はそう/:item_type.title/のようなルートを設定し、そのITEM_TYPEに関連付けられているすべてのアイテムを紹介したいと思います。

答えて

0

アイテムのタイトルは一意であると仮定します。また、スキーマの設定方法は、各アイテムタイプは1つのアイテムしか持てないため、特定のアイテムタイプに対して複数のアイテムが表示されるようにするには、リファクタリングする必要があります。

このような何かがうまくいく

# routes.rb 
get '/:title' => 'items#item_by_type_title 

これは、例えばなりますyourserver.com/fooをItemsControllerのアクション 'item_by_type_title'にルーティングします。次に、商品コントローラで:

def item_by_type_title 
    @item_type = ItemType.find_by_title(params[:title]) 
    @item = @item_type.item 
end 
+0

ありがとうございました!あなたはどのように協会をリファクタリングしますか?私は避けようとしていました:item_type has_many:items – Dileet

+0

@Dileet、item_typesが多くのアイテムに関連付けられる唯一の方法は、アイテムタイプがhas_manyアイテム(各アイテムがitem_type_id )、または多対多の関係。それは本当にあなたの意図にかかっています。 –