0
- 紅寶石2.0.0p247
- 的Rails 4.0.0
是否有可能同一個URL包含不同的ID參數?軌道路線:相同的URL不同的ID參數
讓我來解釋更多細節。我希望這些相對路徑:
- 食譜/素食(食譜/:kind_id)
- 食譜/飲料(receitas /:CATEGORY_ID)
「種」 和 「類別」 是兩種不同的模式與自己的身份證和「配方」有相同的關係。
我有關聯關係:
recipe.rb
belongs_to :kind
belongs_to :category
的routes.rb
resources :recipes, :only => "index" do
collection do
get :kind, :to => "recipes#index", :path => ":kind_id"
get :category, :to => "recipes#index", :path => ":category_id"
end
end
耙路線
個kind_recipes GET /receitas/:kind_id(.:format) recipes#index
category_recipes GET /receitas/:category_id(.:format) recipes#index
配方#索引
if params[:kind_id]
@kind = Kind.find_by_slug(params[:kind_id])
@recipes = @kind.recipes
elsif params[:category_id]
@category = Category.find_by_slug(params[:category_id])
@recipes = @category.recipes
end
當我訪問 「食譜/飲料」(飲品是 「CATEGORY_ID」)傳遞的參數爲 「kind_id」,因爲路線順序。
我錯過了什麼?
Isee。太遺憾了! 感謝@PierrePretorius的答案。 我以爲我從路由傳遞參數到控制器(:kind_id和:category_id)。所以如果我把所有的東西放在一起(類別和種類),我通常可以使用counter_cache嗎?知道「種類」和「類別」是必需的,這一點很重要。所以我不能只使用category_id for counter_cache,我需要在食譜表上使用類似category_id和category_kind_id來處理counter_cache。 你能理解我嗎? – maiconsanson
我在想我必須將我的關聯更改爲「多對多」(如「標記方式」)才能對counter_cache做正確的事情,對嗎? – maiconsanson
您也可以在recipes_model中添加一個名爲'tag_count'的方法,該方法在內部添加kind和類別的計數器緩存。 –