一个“名称”基于URL如果我实现了一个控制器“画廊”的RESTful路由就像如下:越来越REST风格的路线,而不是基于ID的URL
map.resources :galleries
默认情况下,该控制器显示URL将是:
/galleries/:id
这将任何要求作出反应/画廊/ 1等
如果我在数据库中的画廊记录与“名”,值为“肖像”属性。 我可以做同样的,如下所示:
/galleries/portraits
而不是做
/galleries/1 ?
一个“名称”基于URL如果我实现了一个控制器“画廊”的RESTful路由就像如下:越来越REST风格的路线,而不是基于ID的URL
map.resources :galleries
默认情况下,该控制器显示URL将是:
/galleries/:id
这将任何要求作出反应/画廊/ 1等
如果我在数据库中的画廊记录与“名”,值为“肖像”属性。 我可以做同样的,如下所示:
/galleries/portraits
而不是做
/galleries/1 ?
在您的Gallery
模型中,添加一个#to_param
方法,该方法在URL中返回所需内容(在本例中为name
)。在您的控制器中,您仍然可以通过params[:id]
访问该值,并且您可能必须使用Gallery#find_by_name
而不是Gallery#find
。
只要您使用提供的帮助程序(gallery_path
等),您的URL应该很漂亮。
然后,你要想到会发生什么,如果库名称是什么不是很URL友好像“秋/ Fall2009 #1',你有一个正斜杠(将改变路由)和一个破折号(如果未编码,将不会提交给服务器)。因此,在生成此类网址时您需要使用urlen编码。
啊我明白了你的观点,现在我明白了为什么这个选项不是内置的,但我只是为自己制作一个简单的photoblog,并且不负责自己添加画廊,所以这不是一个问题。 – udit 2010-01-01 21:03:08