Ruby on rails 3 Rails-3.1创建相同动作和控制器的嵌套路由,缺乏基本知识

Ruby on rails 3 Rails-3.1创建相同动作和控制器的嵌套路由,缺乏基本知识,ruby-on-rails-3,controller,routes,nested,action,Ruby On Rails 3,Controller,Routes,Nested,Action,执行以下路由配置: resources :cadeiras do resources :professores end resources :cadeiras do resources :fichas end resources :fichas do resources :exercicios end 将为同一控制器和操作生成2个不同的链接,运行rake routes将得到如下结果: fichas GET /fichas(.:format) {:action=>"in

执行以下路由配置:

resources :cadeiras do
resources :professores 
end

resources :cadeiras do 
resources  :fichas
end

resources :fichas do
resources :exercicios
end
将为同一控制器和操作生成2个不同的链接,运行rake routes将得到如下结果:

 fichas GET    /fichas(.:format)  {:action=>"index", :controller=>"fichas"}
 cadeira_fichas GET    /cadeiras/:cadeira_id/fichas(.:format)    {:action=>"index", :controller=>"fichas"}
第一个动作将引用所有“fichas”,而第二个动作仅引用“fichas”和“cadeiras”,如何区分这两个动作

我希望避免如下所述的三级嵌套问题:http://weblog.jamisbuck.org/2007/2/5/nesting-resources


感谢您抽出时间

如果我正确理解您的问题,答案是“您没有区分它们”:

从控制器执行完全相同的操作,呈现完全相同的视图。不同之处在于发送到视图的“FICHA”集合: -在第一种情况下,视图中的所有FICHA都可用 -在第二种情况下,视图中只有与“cadeira”相关的“fichas”(例如,
/cadeira/1/fichas
将仅显示与id为
1的“cadeira”相关的“fichas”)

要确定在索引视图中显示(例如)哪些记录,可以执行以下操作:

unless cadeira_id = params[:cadeira_id]
  @fichas = Ficha.all
else
  @fichas = Cadeira.find(cadeira_id).fichas
end

其余的取决于视图:它应该以相同的方式呈现,您只需选择哪些记录可供其使用。

感谢您的快速响应,但是,如果我正在渲染路径/cadeiras/1/fichas和/fichas/它们都在使用索引操作和索引视图,并且如果我有以下代码
class-FichasController
我会在不同的上下文链接上显示两个不同的内容我不太明白你的问题,但我已经更新了我的响应,以显示如何根据是否在嵌套的情况下更改显示的记录。