2010-06-11 54 views
0

我用Rails 2 我有嵌套這樣的資源: - university_categories - 大學 - 研究 - 教授 - 評論REST Rails 2個沒有資源名的嵌套路由?

我想使用REST風格的路線,但我不希望所有那在我的URL混亂。例如,而不是: /大學/:university_id/studies /:study_id/professor /:professor_id 我想: /教授/:university_id /:study_id /:professor_id (我沒有單獨映射教授,所以不應該有'由於這條路線不應該存在,所以不要混淆這個和/教授/:professor_id)。 同樣,我想使用RESTful資源/路由... 另請注意,我使用slu instead代替ID。學習S are不是唯一的,而其他的是。此外,沒有多對多的關係(所以如果我知道教授的slu,,這是獨一無二的,我也知道它屬於哪個研究,大學和類別,但是我仍希望這些信息位於URI中如果可能的話,搜索引擎優化,也是必要的時候添加一個新的教授)。然而,我確實希望使用淺層嵌套的「管理員」URIs來編輯,銷燬(注意這裏的研究問題,因爲它的slu is並不是唯一的,儘管如此)...

我還想了解一些關於如何使用url助手,以便我沒有太多的問題來修復,如果我將來改變路線...

謝謝。

回答

0

它似乎並不像map.resources將爲您提供這一功能,但你可以使用類似(未經測試)

map.show_professor "/professors/:university_id/:study_id/:professor_id", :controller => "professors", :action => "show" 

,然後類似的航線其他的操作。

有可能是一個更好的解決方案,但是這是我能找到的,將工作的唯一途徑,因爲它似乎map.resources假設它是在/資源/的形式(:RESOURCE_ID)

你可以以這種方式使用REST,您只需自己完成所有操作,而不必使用快捷方式。

作爲一個編輯的例子,你可以用

map.edit_professor "/professors/:id/edit", :controller => "professors", :action => "edit" 
+0

這就是我有我的路線前所做的那樣,但我想收拾了一下。所以我想知道是否有一個更乾淨的方式來做到這一點,但感謝您的答案! – mrbrdo 2010-06-11 18:24:17

+0

我認爲你現在必須手動執行此操作,或將其放入Rails本身。 – alternative 2010-06-11 18:41:57