浅いネストされたリソースに問題があります。私のルートには、ネストされたリソースの大きなツリーがありますが、そのうちの 1 つは浅くない必要があります。簡単な例:
resources :days, shallow: true do
resources :meals, shallow: true do
resources :ingredients, shallow: false
resource :recipe, shallow: true
end
end
デイズリソースが欲しいです。その中に浅い食事のリソース。食中の浅くない食材資源。食材には一意の ID がないためです。さらにレシピリソース。問題は、shallow: false
動作しないことです! これは、Rails ガイドに記載されています。
親リソースに :shallow オプションを指定することもできます。この場合、ネストされたリソースはすべて浅いものになります。
だから私は食材のためのそのようなルートを取得します:
meal_ingredients GET /meals/:meal_id/ingredients(.:format) ingredients#index
POST /meals/:meal_id/ingredients(.:format) ingredients#create
new_meal_ingredient GET /meals/:meal_id/ingredients/new(.:format) ingredients#new
edit_ingredient GET /ingredients/:id/edit(.:format) ingredients#edit
ingredient GET /ingredients/:id(.:format) ingredients#show
PATCH /ingredients/:id(.:format) ingredients#update
PUT /ingredients/:id(.:format) ingredients#update
DELETE /ingredients/:id(.:format) ingredients#destroy
しかし、私はこのようなものが欲しいです:
GET /meals/:meal_id/ingredients
POST /meals/:meal_id/ingredients
GET /meals/:meal_id/ingredients/new
GET /meals/:meal_id/ingredients/:id/edit
GET /meals/:meal_id/ingredients/:id
PATCH /meals/:meal_id/ingredients/:id
PUT /meals/:meal_id/ingredients/:id
DELETE /meals/:meal_id/ingredients/:id
何か案は?