我的 routes.rb 文件是这样的:
resources :campi do
resources :unities do
resources :buildings do
resources :networks
end
end
end
正如你所看到的,我在建筑物内部有网络,校园内有建筑物,校园内有统一体。 但是,如果我有,例如:
校园ID:10 Unity ID:20 建筑ID:30 网络ID:40
我的网址将是: 的 /坎皮萨伦蒂/ 10 /统一体/ 20 /建筑物/ 30 /网络/ 40
我希望它像: 的 / 10/20 /四十零分之三十零
我该怎么办?
是的,我的模型都是正确的,使用has_many以适当的方式。
修改 我希望它能像这样工作:
如果我acesse,例如, / 10/20 / buildings ,我将进入团结20内的建筑物集合。它包括crud方法的页面。
答案 0 :(得分:0)
根据Rails routing from the outside in中的最后一节:
深度嵌套的资源很快就会变得很麻烦。在这种情况下,为 例如,应用程序将识别路径,例如:
/publishers/1/magazines/2/photos/3
相应的路线助手是publisher_magazine_photo_url, 要求您在所有三个级别指定对象。的确,这个 Jamis Buck的流行article让人感到困惑 为好的Rails设计提出了一个经验法则:
资源不应该嵌套超过1级。
我建议你找出避免这种情况的方法。但是,如果你不能避免这种安排,那么你必须定义一条命名路线来解决这个问题:
get '/:campi_id/:unity_id/:building_id/:network_id', to: 'networks#show', as: :network
get '/:campi_id/:unity_id/buildings', to: 'buildings#index', as: :buildings
我希望你明白这一点。