执行以下路由配置:
resources :cadeiras do
resources :professores
end
resources :cadeiras do
resources :fichas
end
resources :fichas do
resources :exercicios
end
将为我生成2个不同的链接到同一个控制器和动作,运行rake routes ill得到类似的东西:
fichas GET /fichas(.:format) {:action=>"index", :controller=>"fichas"}
cadeira_fichas GET /cadeiras/:cadeira_id/fichas(.:format) {:action=>"index", :controller=>"fichas"}
第一个动作将引用所有'fichas',而第二个动作仅引用'cadeiras'中的'fichas',如何区分这两个动作?
我想避免这里描述的三级嵌套问题:http://weblog.jamisbuck.org/2007/2/5/nesting-resources
感谢您的时间
答案 0 :(得分:1)
如果我理解你的问题,答案是“你不区分他们”:
从控制器执行完全相同的操作,呈现完全相同的视图。不同之处在于发送到视图的“fichas”集合:
- 在第一种情况下,视图中可以使用所有fichas
- 在第二种情况下,视图中只提供与'cadeira'相关的'fichas'(例如/cadeira/1/fichas
将只显示与'{cadeira'相关的'fichas'id
1)
要确定在索引视图中显示哪些记录(例如),您可以执行以下操作:
unless cadeira_id = params[:cadeira_id]
@fichas = Ficha.all
else
@fichas = Cadeira.find(cadeira_id).fichas
end
其余部分取决于视图:它应该以相同的方式呈现fichas,您只需选择实际可用的记录。