在 rails 应用里,如果两个资源是父子关系,你可以定义嵌套资源路由,这种路由可以获取资源的关系 ... 比如一个照片资源拥有多个评论资源 ... 一个评论资源属于一个照片资源 ...
这样我们就可以定义一个嵌套类型的资源路由 ... 定义这种路由可以这样 .. 先定义的是爸爸,我这里就是 resources :photos ... 给它提供一个代码块 ...
在它的里面,再用 resources 为 :comments 资源定义一个资源路由 ... 回到终端,再查看一下给我们生成的路由 ..
这里你会发现,被嵌套的评论路由,它们都有一个 /photos/:photo_id 这个前缀 ...
shallow
在显示评论列表,或者创建新的评论资源的时候,你需要用到 /photos/:photo_id 这个前缀,因为你要根据照片资源的 id 号来显示这个照片资源的评论列表,在创建资源的时候也需要用到这个照片资源的 id ,这样才能让这个评论属于某个照片资源 ...
不过在显示,编辑,更新,删除单个评论资源的时候,你可能不需要这个 /photos/:photo_id ,可以在这个 :comments 资源路由里,把 shallow 选项设置成 true,意思是使用浅嵌套 ...
再回到终端 ... 查看一下应用的路由列表 ... 注意评论资源的路由 ... 你会看到带 /photos/:photo_id 前缀的少了一些 ...