我正在开发围绕树数据结构构建的rails应用程序。这样,控制器的索引显示所述结构的根节点。演示可能更容易解释我想要的东西:
/place/1 == place
我可以安静地定义这样的
/place/1/photos == place/photos
和
/place/1/photos/1 == place/photos/1
等?
理想情况下,我喜欢的是文章url及其嵌套资源url默认工作,这样我就不需要改变一大堆东西并有条件地生成遍布各处的路径。
提前感谢您的帮助。 :)
答案 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)您的其他自定义网址产生任何冲突。