2011-03-15 109 views
18

我使用的是Rails 3,我有兩個模型EquipmentGroup和Reservation。我想保留,是設備組的嵌套的資源,這樣我可以有像URL訪問它們:使用嵌套的路線Rails 3實際上不允許訪問父資源

/equipment_groups/:equipment_group_id/reservations/:id 

不過,我不希望創建的設備組的路線。我可以通過以下方式實現這一點,但它看起來像一個黑客:

resources :equipment_groups, :only => [] do 
    resources :reservations 
end 

有沒有更好的方法來做到這一點?我似乎無法在文檔中輕鬆找到答案。

回答

1

我可以想到一些這樣做的方法。一種方法就是你上面所做的。但是,好像你也沒有必要暴露設備組控制器或它的任何行動,所以下面應該做的很好:

scope "/equipment_groups" do 
    resources :reservations 
end 

scope塊將「/ equipment_groups」追加到它的每一個路線。這將基本上「僞造」嵌套路線。

+2

通過使用'scope'而不是'resources',你會失去一些url生成的魔力。例如,'equipment_group_reservation_path(@equipment_group,@reservation)'不起作用。我更喜歡問題本身提出的解決方案,我不認爲它是一種破解。 – 2013-05-23 17:07:00

+0

這不行!採用這種方法,您將擁有類似的路線,但沒有父母ID,也沒有任何助手來生成路線。 – kaleb4eg 2015-06-12 08:54:04

5

你的方法 - 這是一個標準的方法,沒有什麼更好的。