rails restful routing - 带嵌套的单个索引

时间:2010-06-04 14:26:52

标签: ruby-on-rails routing

我正在开发围绕树数据结构构建的rails应用程序。这样,控制器的索引显示所述结构的根节点。演示可能更容易解释我想要的东西:

/place/1 == place

我可以安静地定义这样的

/place/1/photos == place/photos

/place/1/photos/1 == place/photos/1

等?

理想情况下,我喜欢的是文章url及其嵌套资源url默认工作,这样我就不需要改变一大堆东西并有条件地生成遍布各处的路径。

提前感谢您的帮助。 :)

1 个答案:

答案 0 :(得分:1)

你可以拥有通常的嵌套式restful路径(最好将它们作为基线,并将它们用于非性感的网址,如更新,创建等),然后为你的“漂亮”网址添加一些自定义路由:

map.nested_photo "/place/photos/:id", :controller => "photos", :action => "show"
map.edit_nested_photo "/place/photos/:id/edit", :controller => "photos", :action => "edit"
然后,您可以在照片控制器中添加一些逻辑,以确保即使您没有获得参数[:place_id]也可以获得该位置,例如

  if params[:place_id]
    @place = Place.find(params[:place_id])
  else 
    @place = @photo.place
  end

在自定义网址中要注意的主要事项是,您不会与a)常规的其他网址或b)您的其他自定义网址产生任何冲突。