REST Rails 2个没有资源名称的嵌套路由?

时间:2010-06-11 18:06:20

标签: ruby-on-rails

我正在使用Rails 2。 我有这样的嵌套资源: - university_categories    - 大学     - 学习        - 教授          - 评论

我希望使用RESTful路由,但我不希望我的URL中出现混乱。例如,而不是: /大学/:university_id /研究/:study_id /教授/:professor_id 我想要: /教授/:university_id /:study_id /:professor_id (我不会单独映射教授,所以不应该和/教授/:professor_id之间存在混淆,因为该路由不应该存在)。 再次,我想使用RESTful资源/路由...... 另请注意,我使用的是slugs而不是ID。用于研究的S is不是唯一的,而其他的则是。此外,没有多对多的关系(所以如果我知道教授的slu ,,它是独一无二的,我也知道它属于哪个研究,大学和类别,但是我仍然希望这些信息在URI中如果可能的话,SEO,并且在添加新教授时也是必要的)。但是,我想使用浅层嵌套作为“管理员”URI,例如编辑,销毁(请注意这里的问题,因为它的slug不是唯一的,但是)...

我还想了解如何使用网址助手的一些提示,以便在将来更改路线时我没有太多需要解决的问题......

谢谢。

1 个答案:

答案 0 :(得分:0)

map.resources似乎不会为您提供此功能,但您可以使用类似(未经测试的)

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

然后是其他行动的类似路线。

可能有更好的解决方案,但这是我能找到的唯一方法,因为看起来map.resources假设它的形式是/ resources /(:resource_id)

您可以通过这种方式使用REST,您只需自己执行所有操作,而不是使用快捷方式。

作为编辑的示例,您只需使用

即可
map.edit_professor "/professors/:id/edit", :controller => "professors", :action => "edit"