一個「名稱」基於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